我正确使用此向量吗?

时间:2015-09-07 16:28:16

标签: c++ vector

好的,所以我要做的是在命令行上打印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;
}

1 个答案:

答案 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