有没有一种快速的方法可以只使用一种元素来制作向量的向量?
Posted
技术标签:
【中文标题】有没有一种快速的方法可以只使用一种元素来制作向量的向量?【英文标题】:Is there a quick way I can make a vector of vector using just one type of element? 【发布时间】:2020-03-21 15:35:52 【问题描述】:所以我想制作一个向量的向量,每个向量中有 5 个元素,第一个向量中有 4 个向量。而且我想让所有元素都只是 False。
我可以:
vector <vector<bool> > a;
for(int i=0; i<4; i++)
vector<bool> tmp;
for(int i=0; i<5; i++)
tmp.push_back(False);
a.push_back(tmp);
但是有没有更快的方法来做到这一点?
【问题讨论】:
使用构造函数vector<vector<bool>> a(4, vector<bool>(5, false))
std::vector<std::vector<bool>> a(4, std::vector<bool>(5))
应该以正确的大小和值开始创建a
。它使用构造函数 listed here 的第三个变体。
这能回答你的问题吗? How can I resize a 2D vector of objects given the width and height?
请注意,有一个布尔向量 might not be 是个好主意。
通常I use this alternative 当我需要一个矩形二维时,但在vector<bool>
的情况下,它是@Ron 观点的一个很好的例子。 vector<bool>
是如此不同,以至于它甚至得到了its own documentation page。
【参考方案1】:
使用构造函数
#include <vector>
int main()
std::vector<std::vector<bool>> a(4, std::vector<bool>(5, false));
使用 C++17,您甚至不需要类型 (wandbox):
#include <vector>
int main()
std::vector a(4, std::vector(5, false));
【讨论】:
【参考方案2】:是的,很简单:
vector <vector<bool> > a( 4, vector<bool>(5, false) );
【讨论】:
以上是关于有没有一种快速的方法可以只使用一种元素来制作向量的向量?的主要内容,如果未能解决你的问题,请参考以下文章