C ++ std :: List插入中间和结尾?

时间:2013-10-24 19:34:33

标签: c++ list

如果我有这样的基本列表:

std::list<int> mylist;
mylist.push_front(1);
mylist.push_front(2);
mylist.push_front(3);
mylist.push_front(4);
mylist.push_front(5);
mylist.push_front(6);
mylist.push_front(7);

如何在3和4之间插入数字8?

2 个答案:

答案 0 :(得分:3)

使用:std::list::insertstd::advance

auto it = mylist.begin();

std::advance(it,4); //locate the position
mylist.insert(it,8); //insert the element

答案 1 :(得分:1)

如果您的列表按照示例中的比较条件排序,则此方法应该有效。该列表还可能包含重复项:

mylist.insert(std::upper_bound(mylist.rbegin(), mylist.rend(), 3).base(), 8);

std::upper_bound将迭代器返回到第一个位置,其中比较的值大于3std::insert在该位置插入8