使用front_inserter而不是back_inserter

use*_*809 2 c++ iterator std

伙计们!我试图理解迭代器的工作,所以在下面的代码中,是否可以在不改变底层数据(结构)的情况下将back_inserter更改为front_inserter.请你解释一下原因.如果可以改变,请考虑其关键想法.

int a1[] = { 0, 1, 2, 3, 4, 5, 6 };
int a2[] = { 1, 4, 5 };
std::vector<int> a3;
int a4[] = { 0, 2, 3, 6 };
std::set_difference(a1, a1 + 7, a2, a2 + 3, std::back_inserter(a3));
assert(std::equal(a3.begin(), a3.end(), a4));
Run Code Online (Sandbox Code Playgroud)

谢谢你们!

Joh*_*ing 6

插入迭代器只是迭代器的一个实现,它使用标准机制将某些内容插入到集合中.在这种情况下back_inserter,通过调用push_back()容器上的方法完成插入 .因此,为了使用back_inserter,容器必须实现push_back().

同样,使用front_inserter收集糊实现push_front(),vector 但没有.因此,你不能用front_inserter一个vector.

list并且deque都实现push_front,所以如果你使用其中一个而不是一个vector,你可以使用front_inserter.