Fid*_*ity 0 c++ range-based-loop
我创建了一个字符串向量,并想用“基于范围的 for 循环”填充它,但它不起作用。我究竟做错了什么?
\ninvalid initialization of reference of type \xe2\x80\x98int&\xe2\x80\x99 from expression of type \xe2\x80\x98std::__cxx11::basic_string<char>\xe2\x80\x99\nRun Code Online (Sandbox Code Playgroud)\n编译器是否不明白我想引用向量元素,而不是字符串?
\n当我使用经典的“for 循环”时,它工作正常(我可以访问向量的所需元素并在那里写入值),但我不明白为什么它不能与基于范围的 for 循环一起使用。我的一段代码:
\n#include <iostream>\n#include <vector>\n\ntypedef std::vector<std::string> massive;\nusing std::cin, std::cout, std::endl;\n\nint main() {\n int N = 0, M = 0;\n std::string s_n = "";\n\n cin >> N;\n\n massive seats(N);\n \n for (int& i: seats) {\n cin >> s_n;\n seats[i] = s_n;\n }\n\n return 0;\n}\nRun Code Online (Sandbox Code Playgroud)\n
将循环替换为
for (std::string& s : seats) {
cin >> s;
}
Run Code Online (Sandbox Code Playgroud)
简而言之,这s是一个遍历元素的引用seats。