除了为每个容器定义的迭代器之外,标准库在头文件
it = t 在it指定的位置插入值t
*it, ++it, --it
*it = val;
效果和下面的代码一样:
it = c.insert(it, val);
++it; // 递增it使它指向原来的元素
list lst1 = {1, 2, 3, 4};
list lst2, lst3;
copy(lst.begin(), lst.end(), front_inserter(lst2));
copy(lst.begin(), lst.end(), inserter(lst3, llst3.begin()));
// 从cin读取string
istream_iterator isiter(cin);
// 从 file读取string
ifstream ifs("file");
istream_iterator isiter1(ifs);
vector vec;
istream_iterator in_iter(cin);
istream_iterator end; // istream_iterator尾后迭代器
while(in_iter != end)
vec.push_back(*in_iter++);
ostream_iterator out(cout, " ");
for (auto const e : vec)
*out ++ = e;
cout << endl;
vector vec{0, 1, 2, 3, 4, 5};
for (auto riter = vec.rbegin(); riter != vec.rend(), ++riter)
cout << *riter << endl;
// 递增顺序
sort(vec.begin(), vec.end());
// 递减顺序
sort(vec.rbegin(), vec.rend());
string line{"FIRST", "MIDDLE", "LAST"};
auto comma = find(line.begin(), line.end(), ",");
cout << string(line.cbegin(), comma);
auto rcomma = find(line.rbegin(), line.rend(), ",");
cout << string(line.crbegin(), rcomma);
cout << string(rcomma.base(), line.cend());
find(beg, end, val); // 查找val第一次出现的位置
find_if(beg, end, pred); // 查找第一个使得谓词pred为真的元素
reverse(beg, end); // 反转范围中的元素的顺序
reverse(beg, end, dest); // 将元素按逆序拷贝到dest
//从v中删除奇数元素
remove_if(v.begin(), v.end(), [] (int i) { return i % 2; });
// 将偶数元素从v拷贝到v2,v不变。
remove_copy_if(v.begin(), v.end(), back_inserter(v2), [] (int i) { return i % 2;});
lst.merge(lst2); 将来自lst2的元素合并入lst,lst和lst2都必须是有序的
lst.merge(lst2, comp); 元素将从lst2中删除,在合并之后,lst2变为空,第一个版本使用 < 运算符, 第二个版本使用给定的比较操作
lst.remove(val); 调用erase删除掉与给定值相等或令一元谓词为真的每个元素
lst.remove_if(pred);
lst.reverse(); 反转lst中元素的顺序
lst.sort(); 使用< 或给定比较操作排序元素
lst.sort(comp);
lst.unique(); 调用erase删除用一个值的连续拷贝,第一个版本使用==, 第二个版本使用给定的二元谓词。
lst.unique(pred);
// lst.splice(args)或flst.splice_after(args)
(p, lst2) p是一个指向lst中元素的迭代器,或一个指向flst首前位置的迭代器。
函数将lst2所有元素移动到lst中p之前的位置或是flst中p之后的位置。将元素从lst2中删除,lst2的类型必须与lst或flst相同,且不能是同一个链表
(p, lst2, p2) p2是一个指向lst2中位置的有效迭代器,将p2指向的元素移动到lst中,或将p2之后的元素移动到flst中,lst2可以使与lst或flst相同的链表
(p, lst2, b, e) b和e必须表示lst2中的合法范围,将给定范围中的元素从lst2移动到lst或flst。lst2与lst(或flst)可以是相同的链表,但p不能指向给定范围中的元素