【发布时间】:2010-09-30 02:40:30
【问题描述】:
假设我有一个大小为N 的std::vector(我们称之为myVec)。构造一个由元素 X 到 Y 的副本组成的新向量的最简单方法是什么,其中 0 myVec [100000] 到 myVec [100999] 在大小为 150000 的向量中。
如果这不能用向量有效地完成,我应该使用另一种 STL 数据类型吗?
【问题讨论】:
-
你说你想提取一个子向量,但在我看来,你真正想要的是一个视图/访问子向量 - 区别在于视图不会复制 - 老派 C++要使用开始指针和结束指针,鉴于 std::vector 上的 mem 是连续的,那么您应该可以使用指针进行迭代,从而避免复制,但是如果您不介意复制,那么只需初始化一个具有先前向量范围的新向量
-
从 c++11 开始就有 .data()(cplusplus.com/reference/vector/vector/data)。但是,不鼓励在 stl 容器中使用指针,请参阅 stackoverflow.com/questions/31663770/…
-
@serup 可能对 OP 不感兴趣,但我需要知道如何“用你以前的向量的范围初始化一个新向量”。