【发布时间】:2014-02-23 21:57:15
【问题描述】:
提取部分向量的最佳方法是什么?如果我有
std::vector<int> v1(9);
for(int i = 0; i < 9; i++)
v1[i] = i + 1;
我需要一个输入的代码
std::vector<int> v2(2);
v1 的第二个和第三个元素。我必须做一个循环还是有最聪明的方法?
【问题讨论】:
提取部分向量的最佳方法是什么?如果我有
std::vector<int> v1(9);
for(int i = 0; i < 9; i++)
v1[i] = i + 1;
我需要一个输入的代码
std::vector<int> v2(2);
v1 的第二个和第三个元素。我必须做一个循环还是有最聪明的方法?
【问题讨论】:
使用vector构造函数的迭代器形式试试这个
std::vector<int> v2(v1.begin() + 1,v1.begin() + 3);
如果v2 已经存在,请使用assign
v2.assign(v1.begin() + 1,v1.begin() + 3);
【讨论】:
v2.assign(v1.begin() + 1,v1.begin() + 3); 而不是 +2 就可以了。但是,您认为这是最聪明的方法还是使用std::copy 是等效的?
你可以使用std::copy(),假设你想从v1插入第一个和第二个元素到v2的开头,那么你可以使用以下。
std::copy ( v1.begin()+1, ,v1.begin() + 3, v2.begin() );
【讨论】: