C++双数组初始化错误
C++ Double Array Initialization Error
我有这个C++程序:
int box[9][9];
box = { {solution[0][0],solution[0][1],solution[0][2],solution[1][0],solution[1][1],solution[1][2],solution[2][0],solution[2][1],solution[2][2]},
{solution[0][3],solution[0][4],solution[0][5],solution[1][3],solution[1][4],solution[1][5],solution[2][3],solution[2][4],solution[2][5]},
{solution[0][6],solution[0][7],solution[0][8],solution[1][6],solution[1][7],solution[1][8],solution[2][6],solution[2][7],solution[2][8]},
{solution[3][0],solution[3][1],solution[3][2],solution[4][0],solution[4][1],solution[4][2],solution[5][0],solution[5][1],solution[5][2]},
{solution[3][3],solution[3][4],solution[3][5],solution[4][3],solution[4][4],solution[4][5],solution[5][3],solution[5][4],solution[5][5]},
{solution[3][6],solution[3][7],solution[3][8],solution[4][6],solution[4][7],solution[4][8],solution[5][6],solution[5][7],solution[5][8]},
{solution[6][0],solution[6][1],solution[6][2],solution[7][0],solution[7][1],solution[7][2],solution[8][0],solution[8][1],solution[8][2]},
{solution[6][3],solution[6][4],solution[6][5],solution[7][3],solution[7][4],solution[7][5],solution[8][3],solution[8][4],solution[8][5]},
{solution[6][6],solution[6][7],solution[6][8],solution[7][6],solution[7][7],solution[7][8],solution[8][6],solution[8][7],solution[8][8]}};
我得到的错误是:
error: assigning to an array from an initializer list
这是什么意思?
在声明变量时必须使用初始值设定项:
int box[9][9]= { {solution[0][0],solution[0][1],solution[0][2],solution[1][0],solution[1][1],solution[1][2],solution[2][0],solution[2][1],solution[2][2]},
{solution[0][3],solution[0][4],solution[0][5],solution[1][3],solution[1][4],solution[1][5],solution[2][3],solution[2][4],solution[2][5]},
{solution[0][6],solution[0][7],solution[0][8],solution[1][6],solution[1][7],solution[1][8],solution[2][6],solution[2][7],solution[2][8]},
{solution[3][0],solution[3][1],solution[3][2],solution[4][0],solution[4][1],solution[4][2],solution[5][0],solution[5][1],solution[5][2]},
{solution[3][3],solution[3][4],solution[3][5],solution[4][3],solution[4][4],solution[4][5],solution[5][3],solution[5][4],solution[5][5]},
{solution[3][6],solution[3][7],solution[3][8],solution[4][6],solution[4][7],solution[4][8],solution[5][6],solution[5][7],solution[5][8]},
{solution[6][0],solution[6][1],solution[6][2],solution[7][0],solution[7][1],solution[7][2],solution[8][0],solution[8][1],solution[8][2]},
{solution[6][3],solution[6][4],solution[6][5],solution[7][3],solution[7][4],solution[7][5],solution[8][3],solution[8][4],solution[8][5]},
{solution[6][6],solution[6][7],solution[6][8],solution[7][6],solution[7][7],solution[7][8],solution[8][6],solution[8][7],solution[8][8]}};
此C++错误:
error: assigning to an array from an initializer list
是由于您试图使用不允许的初始值设定项来分配数组而导致的。创建数组时会发生初始化,并在创建数组时将值推入其中。当数组已经创建并在其中放置了新值时,就会发生赋值。初始化或赋值过程中允许执行的操作不同。
以下是导致上述错误的最简单代码:
#include <cstdlib>
#include <iostream>
using namespace std;
int main(int argc, char** argv) {
int myarray [] = {1,2,4};
myarray [] = {2,5,9};
//error, cannot assign with an initializer.
//You can't initialize an array that's already been initialized.
return 0;
}
如果您想在其中强制输入新值,请尝试std::copy
:
int myarray [] = {1,2,3,4};
int newarray [] = {2,5,9,12};
//copy the first 4 elements from newarray into newarray
std::copy(newarray, newarray + 4, myarray);
for(int x = 0; x < 4; x++){
cout << myarray[x] << ",";
}
打印:2,5,9,12,
但你应该问问自己,为什么你要在接近金属的地方编程。
考虑改用std::vector:
#include <iostream>
#include <vector>
using namespace std;
int main(int argc, char** argv) {
vector<int> array;
cout << "size is: " << array.size() << endl;
array.push_back(42);
cout << "size is: " << array.size() << endl;
cout << "data items: " << array.at(0) << endl;
array.insert(array.begin(), 5);
array.insert(array.end(), 20);
cout << "size is: " << array.size() << endl;
int len = array.size();
for(int x = 0; x < array.size(); x++){
cout << "data item: " << array.at(x) << endl;
}
return 0;
}
打印此:
size is: 0
size is: 1
data items: 42
size is: 3
data item: 5
data item: 42
data item: 20
使用C++向量重新初始化列表:
#include <iostream>
#include <vector>
using namespace std;
int main()
{
int foobar[3] = {1, 2, 3};
std::vector<int> myvector(foobar, foobar + 3);
int moobar[3] = {4, 5, 6};
myvector.assign(moobar, moobar + 3);
for(int x = 0; x < 3; x++)
cout << myvector[x];
}
相关文章:
- 在c++中初始化矩阵时出现分段错误(核心转储)
- 如何使用C++初始化向量;脚本化值不是数组、指针或矢量错误
- 分段错误 - 读取初始化指针的数组
- 需要帮助在 c++ 中将字符串转换为字符 ----错误 "const char *" 类型的值不能用于初始化 "char" 类型的实体
- 修复未初始化的局部变量错误
- 初始化迭代器错误 C++ 在 GCC 编译器中
- 在 gtest 中初始化堆栈上的引用变量的隔离错误
- 类型为 "Bucket&"(未限定的 const 限定)的引用不能使用 "SortedList." 类型的值进行初始化 如何修复此错误?
- 使用直接大括号初始化时,C++ 编译错误"声明末尾的预期";"
- 为什么我在向量初始化时收到此错误?
- C1001内部编译器错误是由于矢量初始化(如数组)引起的
- 初始化thread_local叮当中的错误
- Eclipse:错误:初始化模式失败(无法连接到目标)
- C 错误:初始化量太多
- Seg 错误初始化列表向量与控制台输入
- 通过传递的指针段错误初始化 char 数组
- c++错误:初始化器元素不是常量
- C++错误:初始化结构实例的向量数组成员
- Visual Studio C++11g编译错误-初始化程序过多
- OpenCV 错误:初始化 OpenCLDevices 中的 GPU API 调用 (-1001)