【发布时间】:2015-01-15 17:23:25
【问题描述】:
我正在寻找 C++ 向量中的一个元素,当我找到它时,我想以数字形式(整数、浮点数)获取找到的元素的索引。
我的天真尝试是这样的:
int x;
int index;
vector<int> myvector;
vector<int>::iterator it;
it = find(myvector.begin(), myvector.end(), x);
index = (int) * it;
此代码出错。你能告诉我如何将迭代器转换为 int(如果可能的话),或者你能告诉我如何以其他方式获取找到的元素的索引吗?谢谢。
【问题讨论】:
-
错误是什么?演员表毫无意义(但并非不正确),因为
*it已经是您想要的值,您应该在取消引用之前检查它是否不等于myvector.end()(否则您将收到运行时错误或其他未定义的行为)。 -
只是一个注释。您不想将迭代器转换为
int,这几乎没有任何意义。 Iterator 更像是 C++ 标准库命名法中的指针,因此它指向一个地方,您可以取消引用它。当你得到它时,你可以从一开始就测量距离,就像用指针(或多或少)一样。 -
对不起,我错过了你真正想要的(元素的索引,而不是值)。看我的回答。
-
在尝试取消引用之前,您需要确保
it != myvector.end()。