值错误的二维矢量
2d Vector with wrong values
我在研究STL,然后我想"我会做一个2d数组!"但不管怎样。。。
a编码如下:
vector< vector<int> > vetor;
vetor.resize(10);
vetor[0].resize(10);
for(int i = 0; i < vetor.capacity(); i++){
for(int h = 0; h < vetor[0].capacity();h++){
vetor[i][h] = h;
}
}
直到这里,好的。但当我试图显示数组值时,使用这个:
for(int i = 0; i < vetor.capacity(); i++){
cout << "LINE " << i << ": ";
for(int h = 0; h < vetor[0].capacity();h++){
cout << vetor[i][h] <<" ";
}
cout << "n";
}
结果真的是错误的:
LINE 0: 4 5 6 7 8 9 6 7 8 9
LINE 1: 0 1 2 3 0 1 2 3 0 1
LINE 2: 0 1 2 3 0 1 2 3 0 1
LINE 3: 0 1 2 3 0 1 2 3 0 1
LINE 4: 0 1 2 3 0 1 2 3 0 1
LINE 5: 0 1 2 3 0 1 2 3 0 1
LINE 6: 0 1 2 3 0 1 2 3 0 1
LINE 7: 0 1 2 3 0 1 2 3 0 1
LINE 8: 0 1 2 3 0 1 2 3 4 5
LINE 9: 0 1 2 3 4 5 6 7 8 9
我的程序发生了什么?它没有打印正确的值!
几个问题:
您只是在调整第一个向量的大小。你需要调整所有的大小。
相反,可以考虑使用以下内容:
vector< vector<int> > vetor (10, vector<int>(10, 0));
这将创建一个10 x 10的矢量。
向量有一个构造函数(size_t-size,t default_value),它用值default_value的size元素构造向量。
如果矢量的大小在compiletime是已知的并且不会改变,那么您也可以使用std::数组来略微提高性能。
其次,使用vector::size()而不是vector:
for(int i = 0; i < vetor.size(); i++){
for(int h = 0; h < vetor[0].size(); h++){
vetor[i][h] = h;
}
}
当您调整否决器[0]的大小。resize(10)时,您只调整了第一个元素的大小。
您需要:
vetor[0].resize(10)
vetor[1].resize(10)
vetor[2].resize(10)
.
.
vetor[10].resize(10)
做你想做的事。
(换句话说,向量中的每个向量都有可能不同的大小。它不是矩阵类。)
相关文章:
- 迭代二维矢量时发生运行时错误
- 尝试从动态分配的二维数组 C++ 中读取值时出现分段错误,并在尝试删除它时给出 munmap_chunk():
- 二维数组错误
- 创建二维向量的错误
- 错误:解除分配二维阵列
- 将二维数组传递给函数会产生奇怪的错误
- 二维数组分割错误
- 二维矢量增量错误
- 值错误的二维矢量
- 二维数组索引中的c++错误
- 二维矢量的运行时错误
- 访问传递给函数的二维数组时出现分段错误
- 为什么在尝试用c++创建二维数组时会出现此错误
- c++二维向量语法错误
- 当我尝试输出一个二维数组时,它输出了错误的数字
- 正在将内存分配给二维字符数组,错误:从“void*”到“char**”的转换无效
- 将二维数组推入矢量并删除数组,但会导致分割错误
- 在建立二维矩阵时避免分割错误
- 二维数组分配中的c++分割错误
- 指向二维数组的指针,程序编译时抛出分段错误