c++ - 将迭代器转换为 int

标签 c++ vector iterator

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/

相关文章:

c++ - 给定一个线程 id,如何在 linux 上的 C++ 中确定它是否存活

c++ - 是否有必要在 Windows 注册表中转义字符串中的斜杠?

c++ - 我怎么知道在 C++ 中排序的 vector 是否有重复值

javascript - 一行数组迭代器javascript

c++ - Eclipse:C/C++ 插件下载链接?

c++ - 将类指针传递给类的构造函数

c++ - std::vector(或其他地方)中最奇怪的错误(或其他)。这是怎么回事?

c++ - 用线性增加的值填充 vector

C++ "vector iterator not dereferencable"在运行时

c++ - 如何将迭代器限制为前向迭代器?