|
|
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 . |
|
KiraHoneybee · 具有构造函数参数的模板化类 3 年前 |
|
|
nick2225 · 隐式调用复制构造函数? 3 年前 |
|
|
nohaga · 为什么在本例中p3需要默认构造函数? 3 年前 |
|
|
Aadil Hoda · 为什么类类型的成员需要初始化? 3 年前 |
|
|
EloiGG · 具有任意类型的变量的可数的C++函数 3 年前 |