所以,我有以下内容:
std::vector< std::vector <int> > fog;
Run Code Online (Sandbox Code Playgroud)
我非常天真地初始化它:
for(int i=0; i<A_NUMBER; i++)
{
std::vector <int> fogRow;
for(int j=0; j<OTHER_NUMBER; j++)
{
fogRow.push_back( 0 );
}
fog.push_back(fogRow);
}
Run Code Online (Sandbox Code Playgroud)
感觉非常错误......有没有另一种方法来初始化这样的矢量?
hmj*_*mjd 167
使用std::vector::vector(count, value)
接受初始大小和默认值的构造函数:
std::vector<std::vector<int> > fog(
A_NUMBER,
std::vector<int>(OTHER_NUMBER)); // Defaults to zero initial value
Run Code Online (Sandbox Code Playgroud)
如果其他值为零,4
例如,则需要为默认值,则:
std::vector<std::vector<int> > fog(
A_NUMBER,
std::vector<int>(OTHER_NUMBER, 4));
Run Code Online (Sandbox Code Playgroud)
我还应该提到在C++ 11中引入的统一初始化,它允许初始化vector
和其他容器,使用{}
:
std::vector<std::vector<int> > fog { { 1, 1, 1 },
{ 2, 2, 2 } };
Run Code Online (Sandbox Code Playgroud)
jua*_*nza 33
没有append
方法std::vector
,但是如果你想制作一个包含A_NUMBER
向量的向量int
,每个包含other_number
零的向量,那么你可以这样做:
std::vector<std::vector<int>> fog(A_NUMBER, std::vector<int>(OTHER_NUMBER));
Run Code Online (Sandbox Code Playgroud)
Jas*_*son 20
假设您要初始化2D向量m*n,初始值为0
我们可以做到这一点
#include<iostream>
int main(){
int m = 2, n = 5;
vector<vector<int>> vec(m, vector<int> (n, 0));
return 0;
}
Run Code Online (Sandbox Code Playgroud)
如前所述,一般语法为:
std::vector<std::vector<int> > v (A_NUMBER, std::vector <int> (OTHER_NUMBER, DEFAULT_VALUE))
Run Code Online (Sandbox Code Playgroud)
在这里,向量“ v”可以可视化为二维数组,行为“ A_NUMBER”,列为“ OTHER_NUMBER”,其初始值设置为“ DEFAULT_VALUE”。
也可以这样写:
std::vector <int> line(OTHER_NUMBER, DEFAULT_VALUE)
std::vector<std::vector<int> > v(A_NUMBER, line)
Run Code Online (Sandbox Code Playgroud)
在二维矢量中输入值类似于在二维数组中输入值:
for(int i = 0; i < A_NUMBER; i++) {
for(int j = 0; j < OTHER_NUMBER; j++) {
std::cin >> v[i][j]
}
}
Run Code Online (Sandbox Code Playgroud)
其他答案中已经说明了示例。
这对我有用:
vector<vector<int>> minA{ROW_SIZE, vector<int>(COLUMN_SIZE, VALUE)};
Run Code Online (Sandbox Code Playgroud)
小智 6
推荐的方法是使用 fill 构造函数来初始化一个具有给定默认值的二维向量:
std::vector<std::vector<int>> fog(M, std::vector<int>(N, default_value));
Run Code Online (Sandbox Code Playgroud)
其中,M 和 N 是二维向量的维度。
小智 5
我认为最简单的方法是:
std::vector<std::vector<int>>v(10,std::vector<int>(11,100));
Run Code Online (Sandbox Code Playgroud)
10是外层或全局向量的大小,主要是,11是int类型的内层向量的大小,初始值初始化为100!这是我在堆栈上的第一个帮助,我认为它可以帮助某人。
归档时间: |
|
查看次数: |
189355 次 |
最近记录: |