1
9
好问题。我将尝试实现一个特定的迭代器包装器类型,它将两个范围转换为一个范围。行中的某些内容:
现在您可以使用:
或者(我刚刚想到了)您不需要重新声明构造函数。使调用者使用助手函数:
我没有检查代码,只是在我的头顶上打了个字。它可以编译也可以不编译,可以工作也可以不工作…但你可以把它作为一个起点。 |
2
2
最好还是放弃
否则,您必须构建一个连接迭代器。这是相当多的代码,看 this thread 更多。 |
3
2
C++的最好或最坏的特性之一,取决于你的观点,你可以在必要时滥用它来完成任务。在这种情况下,警察是受害者:
我可能把一些细节搞错了,我没有试着编译这个。但它应该给你这个主意。 |
4
1
静态方法可能没有您想象的那么糟糕,这取决于编译器所做的优化。在C++0x中,移动构造函数将删除当前正在发生的任何复制。 同时使用包装迭代器。代码不太可能像avakar链接到的线程那样糟糕,因为您只需要实现 input iterator . |
5
1
2)尽可能避免不必要的复印件。也就是说,一种解决方案是使用一个静态方法来构造范围1的临时非常量,插入范围2并返回它,然后将连接构造函数定义为 您应该查看移动构造函数和R-值引用(通常是C++ 0x的承诺目标)。读这个 article . |
Julia · 矢量中相加为总和S的值的数量 1 年前 |
C_Rod · 在模板方法中确定STL容器中项目的数据类型 2 年前 |
quantumwell · 将空向量放入std::map() 6 年前 |
OutOfBound · 对未初始化内存使用算法的优点 6 年前 |
DarthRubik · 在使用列表删除之后,迭代器如何不无效 6 年前 |