我正在为学校做一个项目,但遇到了一些问题(标题中有错误)。
这是遇到错误的代码行:
kruskalS[n].nodeList[m].push_back(tempFirstCity);
kruskalS是一个结构,nodeList是结构内的一个类型向量,string我正在尝试将tempFirstCity(也是 a string)插入到该数组中。
我很容易犯一个基本错误,因为自四月以来我没有做过任何编程。任何形式的帮助都将不胜感激,如果需要,我愿意从该程序中发布更多信息。
我正在为学校做一个项目,但遇到了一些问题(标题中有错误)。
这是遇到错误的代码行:
kruskalS[n].nodeList[m].push_back(tempFirstCity);
kruskalS是一个结构,nodeList是结构内的一个类型向量,string我正在尝试将tempFirstCity(也是 a string)插入到该数组中。
我很容易犯一个基本错误,因为自四月以来我没有做过任何编程。任何形式的帮助都将不胜感激,如果需要,我愿意从该程序中发布更多信息。
Astd::string是(某种意义上)chars 的容器。push_back函数用于将一个元素添加到容器的末尾。因此,当您调用时kruskalS[n].nodeList[m].push_back(tempFirstCity);,您说您正在尝试将一个元素添加到被string调用的末尾kruskalS[n].nodeList[m]。所以编译器期望一个元素是一个char.
如果您知道那tempFirstCity不是空的并且您想将第一个charfrom添加tempFirstCity到末尾kruskalS[n].nodeList[m](包括您知道的情况tempFirstCity.size() == 1),您可以这样做
kruskalS[n].nodeList[m].push_back(tempFirstCity[0]);
如果你想在任何当前内容之后添加整个字符串,你可以这样做
kruskalS[n].nodeList[m] += tempFirstCity;
如果您希望没有当前内容和/或您只想用tempFirstCity字符串替换已经存在的任何内容,您可以这样做
kruskalS[n].nodeList[m] = tempFirstCity;
您可以使用:
std::string::c_str()
它返回一个const char *.
你说 nodeList 是一个字符串类型的数组。即std::string nodeList[x]其中 x 是一个常数。
然后为该数组分配一个新元素,其中 m < x 如下:
kruskalS[n].nodeList[m] = tempFirstCity;
要附加到向量的末尾,您不需要索引 m:
kruskalS[n].nodeList.push_back(tempFirstCity);
在索引 m 处插入:
vector<string>::iterator itr = nodeList.begin();
for (int i = 0; i < m; i++)
itr++;
nodeList.insert(itr, tempFirstCity);
在 C++ 中,您可以使用string::c_str()将字符串转换为 C 编程char数组。