作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
伙计们!我试图了解迭代器的工作,所以在下面的代码中,是否可以在不更改基础数据(结构)的情况下将 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));
谢谢大家!
最佳答案
插入迭代器只是迭代器的一种实现,它使用标准机制将某些内容插入到集合中。对于 back_inserter
,插入是通过调用容器上的 push_back()
方法完成的。因此,为了使用 back_inserter
,容器必须实现 push_back()
。
同样,使用front_inserter
集合必须实现push_front()
,vector
does not .因此,您不能在 vector
上使用 front_inserter
。
list
和 deque
都实现了 push_front
,所以如果您要使用其中之一而不是 vector
,您可以使用 front_inserter
。
关于c++ - 使用 front_inserter 而不是 back_inserter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16926575/
伙计们!我试图了解迭代器的工作,所以在下面的代码中,是否可以在不更改基础数据(结构)的情况下将 back_inserter 更改为 front_inserter。请你解释一下为什么。如果改变是可能的,
我是一名优秀的程序员,十分优秀!