调整 2d 大小错误
Resizing 2d error
出于某种原因,在我的类中调整这个二维向量的大小不起作用。感谢您的帮助!
..
Map::Map(const unsigned int& w,
const unsigned int& h,
const unsigned int& s)
: width(w), height(h), size(s)
{
squares.resize(width);
for (unsigned int i = 0; i < width; ++i)
{
squares[i].resize(height); // error here
for (unsigned int j = 0; j < height; ++j)
{
squares[i][j] = Square(sf::Vector2f(i * size, j * size));
}
}
}
std::vector<std::vector<Square>> squares;
..
一些错误消息:
C:\mingw\bin..\lib\gcc\mingw32\4.6.2\include\c++\bits\stl_uninitialized.h|481| instanziiert von »static void std::__uninitialized_default_n_1<<em>TrivialValueType>::_uninit_default_n(_ForwardIterator, _Size( [with _ForwardIterator = Square*, _Size = unsigned int, bool _TrivialValueType = false]«|
C:\mingw\bin..\lib\gcc\mingw32\4.6.2\include\c++\bits\stl_uninitialized.h|529| instanziiert von »void std::__uninitialized_default_n(_ForwardIterator, _Size( [with _ForwardIterator = Square*, _Size = unsigned int]«|
当你 vector.resize(n( 和 n> vector.size(( 时,你要求它创建 n - vector.size(( 新元素。Vector 需要默认构造它们,因为他不知道要使用什么参数。如果它们不是默认可构造的,则调整大小将失败。
但是,如果您不希望 Square 成为默认可构造的,您可以将失败行更改为 vector.reserve(( - 这只能确保有足够的空间容纳新元素,但实际上并没有创建它们。然后,您可以使用
squares[i].emplace_back(sf::Vector2f(i * size, j * size));
哦,顺便说一下,通过引用传递基元具有次优性能。按值传递它们,除非需要它们作为输出参数。
- 为什么将指针重新分配给 1D 数组的 char 时显示错误,但 2D 数组工作正常?
- 解除分配矩形 2D 数组会根据尺寸产生错误
- 动态 2D 阵列.为什么分段错误?
- 分配给阵列时出现分段错误?黑客排名 2D 阵列 - DS.
- 当我在将文件读取到C字符串的2D数组后尝试对任何内容进行定制时,C++分段错误
- 2D 数组中的"Excess elements in scalar initializer"错误
- 索引 2D 向量时'Reference to type const..'编译错误
- 由于 2D 数组声明,C++ 14 中的运行时错误
- 与 fftw3 相比,错误的 2D CuFFT 逆变换
- 将 2D 数组插入 std::vector 时"cannot convert from 'const GLfloat [12]' to '_Objty'"错误消息
- 传递动态分配的 2D 字符数组会导致分段错误
- MPI_Scatterv/ Gatherv 使用带有"large" 2D 矩阵的C++会引发 MPI 错误
- 使用 2D arrray.分段错误 - C++
- 错误在删除动态分配的2D数组期间发生
- C++的新增功能:创建 2D 数组并具有正确的赋值运算符:分割错误
- 当我传递带有列大小的2D数组时,它会显示出一些错误
- 尝试将文本文件加载到动态分配的 2D 数组中时出现'Segmentation fault'错误
- C++从函数返回的 2D 数组,错误:以非零状态退出
- 从文本文件读取 2D 数组错误
- 用“ strcpy”在2D数组中删除(字符)的一行(字符)时是否存在任何错误