使用迭代器查找元素的位置
findding the position of elements with iterator
如何在向量中找到元素的索引?假设矢量的快照包含
10 12 15 23 43
现在我想插入一个数字。
1-插入15=>返回2(位置)
2-插入50=>push_back()=>返回5(位置)
这是我写的,但是我无法将迭代器转换为整数。
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
vector<int> v;
int insertVector(int a);
int main()
{
int a;
cout << "enter number: ";
cin >> a;
int pos = insertVector(a);
cout << pos; // update
return 0;
}
int insertVector(int a)
{
vector<int>::iterator it;
it = find(v.begin(), v.end(), a);
if (it == v.end()) {
v.push_back(a);
return v.size();
}
return it; // error
}
更新:
如果我将return it;
更改为return *it;
,则输出错误。像这样:
enter number: 10
1
enter number: 20
2
enter number: 25
3
enter number: 35
4
enter number: 45
5
enter number: 5
6
enter number: 25
25 // wrong
insertVector
的返回类型是int
,但您可以返回迭代器。将您的代码更改为:
int insertVector(int a)
{
vector<int>::iterator it;
vector<int>::iterator begin = v.begin();
it = find(begin, v.end(), a);
if (it == v.end()) {
v.push_back(a);
return v.size();
}
return std::distance(begin, it);
}
您可以自己显式地迭代向量:(不太优雅,但需要对向量进行一次迭代)
int position = 0;
for (it = v.begin(); it != v.end(); ++it; ++position) {
if (*it == a) {
return position;
}
}
v.push_back(a);
return v.size() - 1;
相关文章:
- 如何将两个不同矢量的同一位置的两个元素组合在一起
- 求最大元素位置的分治算法
- 如何将元素添加到向量的字符串位置
- 这个返回元素位置的基于循环的函数有什么问题?
- 如何通过保持第一个插入的位置来对列表中插入的其余元素进行排序?
- 数组中所有元素的最新最小元素的第五个位置
- 是否有任何优雅的方式来遍历元素位置可以更改的列表?
- 如何从几乎排序的链表中分离放错位置的元素?
- 如何获得相同数量的第一个和第二个元素以及它们在c++中各自的位置
- 在给定元素在螺旋上的位置的情况下,在二维数组中查找元素
- 查找 2D 向量的位置,该向量是类C++的一个元素
- 创建一个函数以在给定位置将元素插入到列表中
- 如何查找数组中所有重复元素的位置
- 有没有办法在unordered_map的某个位置插入元素
- 这是查找向量中元素位置的合法方法吗?
- C 比较数组中的元素并打印位置
- 在 c++ 中替换文件中特定位置的元素
- 访问 std::string 中的元素,其中字符串的位置大于其大小
- 如何使用 std::find 找到元素的所有位置?
- 如何在默认和二维数组中找到顺序扩大元素的位置