如何将一个空的pair向量推入另一个向量中?

14
  std::vector<std::vector< std::pair<int, int> > > offset_table;
  for (int i = 0; i < (offset.Width()*offset.Width()); ++i)
  {
    offset_table.push_back(  std::vector< std::pair<int, int> >  );
  }

这是我的代码,但我遇到了错误:

main.cpp: In function ‘void Compress(const Image<Color>&, Image<bool>&, Image<Color>&, Image<Offset>&)’:
main.cpp:48:66: error: expected primary-expression before ‘)’ token

我不想让这些成对的值携带任何实际的内容,目前只需要一个空向量即可。我应该如何操作?

2个回答

19

你想构造一个向量以传递给push_back,你只是缺少括号:

offset_table.push_back(  std::vector< std::pair<int, int> >()  );

或者,你可以采用以下方法代替你的循环。它更好,因为向量将在单个分配中恰好分配所需的内存:

offset_table.resize( offset.Width()*offset.Width(), std::vector< std::pair<int, int> >() );

或者使用下面这种更简洁的方式,因为它使用了resize的默认第二个参数:

offset_table.resize( offset.Width()*offset.Width() );

0
std::vector<std::vector< std::pair<int, int> > > offset_table;

这是一个二维数组,所以你需要使用嵌套数组。只需获取内部向量的长度。

for(vector< pair<int, int >> vv in offset_table)
{
    if(vv.size() == 0)
    {
        // this is your target.
    }
}

我认为你误解了问题。我认为问题是如何将一个空向量推入到一个向量的向量中。 - Owl

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接