【问题标题】:Am I using this vector correctly? [duplicate]我是否正确使用了这个向量? [复制]
【发布时间】:2015-12-03 06:09:39
【问题描述】:

好的,所以我要做的是将包含 20 个姓氏的向量打印到命令行上。 (在这种特殊情况下,这并不是我想要做的全部,但为了澄清起见,我试图在命令行上打印出 20 名学生的信息,这些信息是他们的 ID 号、姓氏和年龄。我会发布首先是向量,然后是调用下面收集所有信息的函数(缺少年龄,因为我还没有得到它)​​但我的问题是,我是否正确使用了这个字符串向量?当我编译时我听说

“错误:无法转换 '{“Simmons”、“Jones”、“James”、“Little”、“Russell”、“Haynes”、“Marcotte”、“Kemper”、“Vandergore”、“Hume” , "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;
}

【问题讨论】:

  • 这种向量初始化需要 C++11 支持。
  • 你不能举一个更小的例子吗?!

标签: c++ vector


【解决方案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

【讨论】:

  • 你是对的,固定的。
  • 我该如何编译?我正在使用 Code::Blocks,抱歉我是个菜鸟。
  • 查看此链接:stackoverflow.com/questions/18174988/… 以配置 Code::Blocks 以支持 C++11。如果你觉得有用,请接受我的回答。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-13
  • 1970-01-01
相关资源
最近更新 更多