Zin*_*Zhu 2 c++ vector operators
我试图使用矢量svec来存储一些字符串值.但是在Dev C++ 5.6.1编译时,编译器报告了"不匹配operator ="的错误.为什么会出现此错误以及如何解决?谢谢.
#include<vector>
#include<iostream>
#include<string>
using namespace std;
int main() {
vector<string> svec[100];
for (int i = 0; i < 100; ++i) {
svec[i] = "ABC";
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
[错误]'operator ='不匹配(操作数类型是'std :: vector>'和'const char [4]')
编辑:问题出在矢量svec [100]; 把它改成矢量svec(100)后情况顺利;
edit2:我很好奇编译器对以下声明的看法.svec仍被宣布为矢量吗?
vector<string> svec[100];
Run Code Online (Sandbox Code Playgroud)
vector<string> svec[100];正在创建一个包含100个元素的数组std::vector<std::string>.这是有效的语法,虽然这是一件相当奇怪的事情.
svec[i]因此,目前的形式是指a std::vector<std::string>.无法分配"ABC".这就是你得到错误的原因.
你的意思是vector<string> svec(100);.这是调用一个vector 构造函数,它将向量预先调整为具有100个元素.
它恰好std::vector重载了[]操作符以便为您提供元素访问.(与纯数组相似的一种相当方便的模拟.)如果进行更改,svec[i]将引用一个可以按照当前方式设置的字符串.