我正在尝试获取创建的新向量的索引值,但是find()函数不会让我分配一个具有上述find()返回值的变量
我曾尝试在其他地方分配值,并用起点和终点来摆弄,但是程序根本不会为tempind分配find()的值。
void count_city(vector<string> city, vector<string> state) {
vector<string> cities(4);
vector<int> counted(4);
string temp = " ";
int tempind = 0;
for (int i = 0; i < city.size(); i++) {
temp = city.at(i);
if (find(cities.begin(), cities.end(), temp) != cities.end()) {
continue;
}
else {
cities.push_back(temp);
}
tempind = (find(cities.begin(), cities.end(), temp));
counted.at(tempind) = count(city.begin(), city.end(), temp);
}
}
我只是希望tempind成为矢量城市中城市的索引,但是它不会让我编译,并且给我一个错误,指出我的类型不同。
std::find()
返回一个迭代器,而不是索引。如果需要索引,可以将迭代器传递给std::distance()
:
auto found = find(cities.begin(), cities.end(), temp);
tempind = distance(cities.begin(), found);
但是在这种情况下,您实际上根本不需要find()
索引。由于push_back()
插入在向量的末尾,因此所需的索引是向量在push_back()
插入向量之前的大小:
for (int i = 0; i < city.size(); i++) {
temp = city[i];
if (find(cities.begin(), cities.end(), temp) != cities.end()) {
continue;
}
tempind = cities.size();
cities.push_back(temp);
counted.at(tempind) = count(city.begin(), city.end(), temp);
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句