c++ - 是否可以使用数组拷贝来复制 vector 的一部分?

标签 c++ vector stl

How do you copy the contents of an array to a std::vector in C++ without looping?有一个很好的例子,说明如何简单地将数组的内容复制到 vector 中。

能否使用相同的技术将一个 vector 的一部分复制到另一个 vector 中?

例如

vector<int> v;

// ...v has some number of elements and we're interested in an 
// arbitrary number (y) from an arbitrary start point (x)...

vector<int> v2(&v[x], &v[x + y]);

最佳答案

是的,使用迭代器:

vector<int> v2(v.begin() + x, v.begin() + x + y);

如果你愿意,你可以让它更通用一点:

vector<int> v2(std::next(std::begin(v), x), std::next(std::begin(v), x + y));

指针版本(数组对于两个参数都会衰减)首先起作用的原因是指针可以被视为随机访问迭代器。

关于c++ - 是否可以使用数组拷贝来复制 vector 的一部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17464294/

相关文章:

C++ 程序读取 ppm 和 pgm 文件,对其进行操作并输出。编译错误

c++ - 为什么不同类别的 STL 算法调用不同?

c++ - 从非原始类型的 vector 中删除重复元素

c++ - 搜索值并在 vector 中返回其索引的最有效方法?

c++ - 应使用哪种数据结构 multimap、boost::bimap、multiset 或任何其他数据结构

C++ 编译。翻译阶段#1。通用字符名称

c++ - 在 C++0x lambda 中是否可以看到函数局部类型定义?

c++ - 所有 CC_CALLBACK_# 宏之间有什么区别?

C++ 将文件读入 hash_map

c++ - 将结构添加到映射中