c++ - 如何在 C++ 中将 vector 迭代器转换为 int

标签 c++ vector iterator

我正在寻找 C++ vector 中的元素,当我找到它时,我想以数字形式(整数、 float )获取找到的元素的索引。

我的天真尝试是这样的:

int x;
int index;
vector<int> myvector;
vector<int>::iterator it;
it = find(myvector.begin(), myvector.end(), x);  
index = (int) * it;

此代码出错。你能告诉我如何将迭代器转换为 int(如果可能的话),或者你能告诉我如何以其他方式获取找到的元素的索引吗?谢谢。

最佳答案

你需要使用标准函数std::distance

index = std::distance( myvector.begin(), it );

if ( index < myvector.size() )
{
    // do something with the vector element with that index
}

尽量使用 std::distance,即使是随机访问迭代器。此功能在新旧 C++ 标准中均可用。

关于c++ - 如何在 C++ 中将 vector 迭代器转换为 int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26995725/

相关文章:

c++ - 在 std::vector 中调整大小与 push_back :它是否避免了不必要的复制分配?

java - 如何在Java中实现多维数组的自定义迭代器?

c++ - 不可能 : this pointer as a default argument. 为什么?

使用 scanf 而不是 var=0 后,C 程序停止工作

c++ - Swift 与 Objective-C - 重用 C++ 代码

haskell - 使用 O(1) 函数编写 CString 的可存储实例以获取总字节长度

java - 一个迭代器,它改变并返回相同的对象。不好的做法?

C++ STL 列表迭代器

c# - 可以从编译为 wasm 的 C# 调用 C++ 吗?

c++ - lambda 应该能够看到本地类吗?