如何按列复制矢量?

时间:2011-01-04 23:52:59

标签: c++ vector

我有一个二维矢量说

vector < vector < int > > sample;

sample = 1 2 3 4 5
         6 7 8 9 0
         1 1 1 1 1
         2 2 2 2 2

现在我想只将最后两列复制到另一个2d向量中,如

vector < vector < int > > test;

test = 4 5
       9 0 
       1 1
       2 2

我怎样才能有效地做到这一点?

2 个答案:

答案 0 :(得分:3)

我听说boost有一个foreach循环

std::vector< std::vector<int> > v;
BOOST_FOREACH(std::vector<int> const &i, test) {
  v.push_back(std::vector<int>(i.end() - 2, i.end()));
}

如果你没有提升,我会选择常规的循环。但我认为我不会首先使用嵌套的std::vector。如果您只有两列行,最好使用boost::array<int, 2>的向量。

答案 1 :(得分:3)

也许是这样的?

#include <algorithm>

vector<vector<int> > new_vector;
new_vector.resize(sample.size());

for (size_t i = 0; i < new_vector.size(); ++i) {
    new_vector[i].resize(2);
    copy(sample[i].end() - 2, sample[i].end(), new_vector[i].begin());
}