program.cpp:12:140:错误:在C ++ 98' x'必须由构造函数初始化

时间:2017-11-09 10:35:33

标签: c++

在codeforce中,他用A键盘474方程式给我做了...消息是......

Can't compile file: program.cpp: In function 'int main()': program.cpp:12:140: error: in C++98 'x' must be initialized by constructor, not by '{...}' vector<char> x = { 'q','w','e','r','t','y','u','i','o','p','a','s','d','f','g','h','j','k','l',';','z','x','c','v','b','n','m',',','.','/'}; ^ program.cpp:12:140: error: could not convert '{'q', 'w', 'e', 'r', 't', 'y', 'u', 'i', 'o', 'p', 'a', 's', 'd', 'f', 'g', 'h', 'j', 'k', 'l', ';', 'z', 'x', 'c', 'v', 'b', 'n', 'm', ',', '.', '/'}' from '<brace-enclosed initializer list>' to 'std::vector<char>'

这是我的代码......

code

2 个答案:

答案 0 :(得分:1)

C ++ 98不支持initializer_list语义。您必须回退可以使用聚合列表初始化的数组:

char array[] = { 'a', 'b', 'c' };
vector<char> x(array, array + sizeof(array)/sizeof(char));

如果你不需要动态数组,你可以选择使用C数组。

编辑:尽管已经无数次提到过,但我也强烈建议使用现代的C ++编译器(如果有的话)。

答案 1 :(得分:0)

此外,作为 Jodocus 答案的附录,我强烈建议您定义一个函数,您可以在其中通过引用函数数组中的指针轻松调用数组,您可以在其中进行逻辑比较。

更重要的是,如果您需要一个库来始终如一地以一般形式执行此操作,我建议您使用一个类结构,您可以从中轻松地定义您的函数。

这将节省您的时间,而不必复制和粘贴该数组。这有点难,但值得花时间。

确保为函数条件比较或只是在条件操作时索引数组,根据返回的纯文本值引用索引值。