创建具有False值的二维布尔向量



我也想创建一个大小为n x n的布尔类型的二维向量。但我不想使用two-for-loop为每个索引赋值false,而不是在创建这个向量时直接赋值。语法为:-vector<vector<bool>> V(n,false)

但它给了我错误

有一个构造函数接受一个计数和一个元素,但false不是std::vector<bool>。你想要

std::vector<std::vector<bool>> V(n, std::vector<bool>(n,false)  );
//   |---- inner vectors  ----|

两个免责声明:

小心使用std::vector<bool>。它与其他std::vector不同(例如,参见向量的替代项<bool>(。

向量中的一个向量很少是最好的数据结构。std::vector的幂是其数据局部性,然而std::vector<std::vector<T>>不具有此特征(只有内部向量的元素是连续的(。

vector<vector> V(n,false)这会给出一个错误,因为您没有声明每个v[i]的大小,因此它不能将每个v[i][j]分配为false。

可以使用向量<矢量>v(n,向量(n,false((;

代码:

#include<bits/stdc++.h>
using namespace std;
int main()
{
int n;
cin>>n;
vector<vector<bool>> v(n, vector<bool> (n, false));
for(int i=0;i<n;i++)
{
for(int j=0;j<v[i].size();j++)
{
cout<<v[i][j]<<" ";
}
cout<<'n';
}
}

答案:

n=5
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0