簡體   English   中英

將向量推入向量

[英]Pushing a vector into an vector

我有一個二維向量

typedef vector <double> record_t;
typedef vector <record_t> data_t;
data_t data;

所以我的2d向量是這里的數據 它具有諸如說的元素,

1 1 1 1 1
2 2 2 2 2
3 3 3 3 3
4 4 4 4 4
5 5 5 5 5

現在我想將這些元素插入另一個2D向量中

 std::vector< vector<double> > window;

所以我要做的是創建一個遍歷數據行並將其推入窗口的迭代器

std::vector< std::vector<double> >::iterator data_it;

    for (data_it = data.begin() ; data_it != data.end() ; ++data_it){
      window.push_back ( *data_it );
      // Do something else
      }

有人可以告訴我我錯了嗎,或者建議解決方法? 順便說一句,我想逐個元素地推送它,因為我也希望能夠在循環內做其他事情。 即我想檢查一個條件並在其中增加迭代器的值。 例如,如果條件滿足,那么我將在循環內執行data_it + = 3或類似的操作。

謝謝

PS我昨晚問了這個問題,但沒有得到任何回應,這就是為什么我再次發布它。

如果您需要的是:

檢查條件並在其中增加迭代器的值。 例如,如果條件滿足,那么我將在循環內執行+ = 3或類似的操作。

然后使用while循環而不是for migth幫助:

std::vector< std::vector<double> >::iterator data_it = data.begin();

while (data_it != data.end()) {
  window.push_back ( *data_it );
  if (SatisfiesCondition(*data_it)) {
    data_it += 3;
  }
  else {
    ++data_it;
  }
}

您的代碼當前逐行復制數據,而不是逐元素復制數據。

對於2D數組的逐元素復制,您需要一個嵌套循環,如@AmbiguousX所述。 如果從一個空的2D數組window ,則代碼應如下所示:

for (std::vector< record_t >::iterator i = data.begin(); i != data.end(); i++)
{
  std::vector<double> row;
  for (std::vector<double>::iterator j = i->begin(); j != i->end(); j++)
  {
    row.push_back(*j);
    // do something else with *j
  }
  window.push_back(row);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM