int i;
vector<string> names;
string s = "penny";
names.push_back(s);
i = find(names.begin(), names.end(), s);
cout << i;
我正在尝试查找 vector 中元素的索引。 iterators
没问题,但我希望它是 int
。我该怎么做?
最佳答案
您可以使用 std::distance
为此。
i = std::distance( names.begin(), std::find( names.begin(), names.end(), s ) );
不过,您可能想要检查您的索引是否超出范围。
if( i == names.size() )
// index out of bounds!
不过,在使用 std::distance 之前使用迭代器可能会更清楚。
std::vector<std::string>::iterator it = std::find( names.begin(), names.end(), s );
if( it == names.end() )
// not found - abort!
// otherwise...
i = std::distance( names.begin(), it );
关于c++ - 将迭代器转换为 int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6136362/