首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将向量推入向量

将向量推入向量
EN

Stack Overflow用户
提问于 2010-12-31 00:30:34
回答 2查看 1.6K关注 0票数 0

我有一个二维向量

代码语言:javascript
复制
typedef vector <double> record_t;
typedef vector <record_t> data_t;
data_t data;

所以我的二维向量就是这里的数据。它有像这样的元素,

代码语言:javascript
复制
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向量中

代码语言:javascript
复制
 std::vector< vector<double> > window;

因此,我所做的是创建一个迭代器,用于遍历数据行并将其推送到window中,如

代码语言:javascript
复制
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或类似的操作。

谢谢

另外,我昨晚问了这个问题,没有得到任何回应,这就是为什么我再次发布它。

EN

回答 2

Stack Overflow用户

发布于 2010-12-31 00:55:34

如果您需要的是:

检查条件并递增内部迭代器的值。例如,如果一个条件满足,那么我将在循环中执行it+=3或类似的操作。

然后使用while循环而不是for帮助:

代码语言:javascript
复制
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;
  }
}
票数 0
EN

Stack Overflow用户

发布于 2010-12-31 01:02:44

您的代码当前逐行复制数据,而不是逐元素复制数据。

对于2D数组的元素复制,您需要一个嵌套循环,正如@AmbiguousX已经提到的那样。如果从一个空的2D数组window开始,代码应该如下所示:

代码语言:javascript
复制
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);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4564346

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档