|
1
4
退一步来说,请记住,您使用的迭代器使用的是自己的算法,而不是容器。所以,如果你有这个:
现在你陷入了这种境地:
请考虑使用迭代器:
所以现在你指的是范围而不是容器:
这限制了不必要的容器和分配的数量。 有了这些,在C++11中您可以做到这一点(其余部分相同):
如果
|
|
|
2
1
std::move 如果您可以访问c++11编译器和可移动对象,则可以做得更好。 请注意,您仍然需要从第一个向量中删除它们。 |
|
|
3
0
还有其他几种方法可以执行此任务,例如使用复制算法和插入迭代器。 但是在算法上,由于向量容器的性质,这些动作的复杂性将始终为O(n)。Vector不是一个允许在O(1)(恒定)时间内将大块数据从一个容器移动到另一个容器的列表。根据特定的STL实现,一种方式可能比另一种方式好10-20%,但不太可能超过这个。 若容器的数据类型允许移动语义,并且您有这些可用的语言功能,这肯定会有所帮助。但这更多的是关于处理容器中的数据对象,而不是容器本身。 |
|
|
kaytu · push_back()后向量大小发生变化 3 年前 |
|
|
Megasa3 · 使用随机值初始化二维向量 7 年前 |
|
|
enanone · 求反std::矢量的最快方法 7 年前 |
|
|
Victor O. · 如何将向量列表存储为全局变量? 8 年前 |
|
|
PaperMoon · 具有结构mmapped向量的结构 8 年前 |