【发布时间】:2018-04-26 23:36:01
【问题描述】:
我有一个由 5 个共享指针组成的 STL std::list,这些指针指向需要按它们各自的 id 数字排序的节点对象。
do
{
check = 0, i = 0;
auto it = newList.begin();
while (i < newList.size() - 1)
{
first = *it;
second = *++it;
if (comp_id(first, second))
{
temp = second;
second = first;
first = temp;
check = 1;
}
i++;
}
} while (check == 1);
在此代码中,comp_id() 返回 true,并在整个组织中运行,但在 list 发生时没有任何变化。我希望对为什么会发生这种情况以及如何解决它有一些看法。
附:我不允许使用list_name.sort() 方法:(
【问题讨论】:
-
second = *++it;这里你可能需要:second = *(it+1); -
确认你的老师有幽默感,然后使用
std::sort。 -
@RemyLebeau (BTW) 我的教授限制我不使用排序功能,以便我们更全面地了解共享指针和列表的具体含义。话虽如此,我现在明白我实际上并没有编辑列表,我现在的问题是我该如何去做。
-
@NicholasProvencal 只需将您的
first和second变量更改为迭代器,然后在将它们的值传递给comp_id()或交换它们的值时取消引用它们
标签: c++ list sorting pointers shared