【问题标题】:extracting part of a vector [duplicate]提取向量的一部分[重复]
【发布时间】: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 的第二个和第三个元素。我必须做一个循环还是有最聪明的方法?

【问题讨论】:

    标签: c++ vector


    【解决方案1】:

    使用vector构造函数的迭代器形式试试这个

     std::vector<int> v2(v1.begin() + 1,v1.begin() + 3);
    

    如果v2 已经存在,请使用assign

    v2.assign(v1.begin() + 1,v1.begin() + 3);
    

    【讨论】:

    • 领先我 5 秒!
    • 这个我知道,但是我的vector v2已经存在...我不能使用构造函数,所以?
    • @mathematician1975 你的代码好像不行
    • @Wellen 在我的机器上运行良好
    • @mathematician1975 好吧,如果我写 v2.assign(v1.begin() + 1,v1.begin() + 3); 而不是 +2 就可以了。但是,您认为这是最聪明的方法还是使用std::copy 是等效的?
    【解决方案2】:

    你可以使用std::copy(),假设你想从v1插入第一个和第二个元素到v2的开头,那么你可以使用以下。

    std::copy ( v1.begin()+1, ,v1.begin() + 3, v2.begin() );
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多