好的,所以我要做的是在命令行上打印20个姓氏的矢量。 (这不是我在这个特殊情况下要做的全部,但为了澄清我试图在命令行打印出20个学生的信息,信息是他们的身份证号码,姓氏和年龄。我会发布向量首先然后调用下面要收集的所有信息的函数(年龄丢失,因为我还没有到达)但我的问题是,我是否正确使用这个字符串向量?当我编译时我被告知了
“错误:无法转换'{”西蒙斯“,”琼斯“,”詹姆斯“,”小“,”拉塞尔“,”海恩斯“,”马科特“,”肯珀“,”范德戈尔“,”休谟“ ,“Stephens”,“Jensen”,“Biersack”,“Sykes”,“Joseph”,“Dunn”,“Hai”,“Meteos”,“Aphromoo”,“Faker”}'从''到'std ::向量>'|“
我希望找到的答案类型是我收到此错误的原因,我如何修复它,以及如何避免下次出现此问题。谢谢大家!
vector<int> studentNumber (20);
vector<string> lastName = {"Simmons", "Jones", "James", "Little", "Russell", "Haynes", "Marcotte", "Kemper", "Vandergore", "Hume", "Stephens", "Jensen", "Biersack", "Sykes", "Joseph", "Dunn", "Hai", "Meteos", "Aphromoo", "Faker"};
void getAllStudentInfo() {
for (vector<int>::size_type i = 0; i <= 20; i++) {
cout << "Student's ID number is: " << 400 + i << endl;
}
for (int i = 0; i < lastName.length(); i++) {
cout << lastName[i] <<endl;
}
return;
}
答案 0 :(得分:1)
使用g++ code.cpp
编译时,此代码给出的错误是:
so.cc:6:229: error: in C++98 ‘lastName’ must be initialized by constructor, not by ‘{...}’
这是因为您使用的是std::initializer_list,可以从C ++ 11开始使用。您应该使用:g++ code.cpp -std=c++11
(或使用默认支持C ++ 11的编译器)编译代码。
您还有一个小错误:使用std::vector::size()
方法代替length()
。
最后,迭代向量的正确方法是使用迭代器或range-based for loop。