使iter指到vector的最后一个元素
时间: 2023-11-22 15:52:56 浏览: 28
可以使用迭代器的 end() 函数来获取指向 vector 结尾的迭代器,然后再将迭代器向前移动一个位置,即可指向 vector 的最后一个元素。
代码示例:
```c++
#include <iostream>
#include <vector>
int main() {
std::vector<int> vec{1, 2, 3, 4, 5};
auto iter = vec.end(); // 获取指向 vector 结尾的迭代器
--iter; // 将迭代器向前移动一个位置
std::cout << *iter << std::endl; // 输出 vector 的最后一个元素
return 0;
}
```
输出结果为:
```
5
```
相关问题
vector删除指定元素
vector是C++语言STL(Standard Template Library)中的一个容器类,类似于数组,但能动态改变大小,并且提供一些便于操作的函数。
在vector中删除某个指定元素有两种方法:
方法一:
使用erase()函数。erase()函数能够删除vector容器中某个指定位置的元素,也能删除一个区间内的元素。该函数的参数可以是迭代器,也可以是元素位置。
例如,删除vector中的第一个元素可以这样实现:
vector<int> vec = {1,2,3,4,5};
vec.erase(vec.begin());//删除第一个元素
如果需要删除多个元素,可以使用迭代器和for循环来实现:
vector<int> vec = {1,2,3,4,5};
for (auto iter = vec.begin(); iter != vec.end(); )
{
if (*iter == 2 || *iter == 4)
{
iter = vec.erase(iter);
}
else
{
++iter;
}
}
方法二:
使用remove()函数。remove()函数能够将所有符合要求的元素移到vector的末尾,并返回迭代器,用于表示新范围的结尾,之后使用erase()函数删除所有末尾的元素。
例如,删除vector中的所有元素值为2的元素可以这样实现:
vector<int> vec = {1,2,3,2,5};
vec.erase(remove(vec.begin(), vec.end(), 2), vec.end());//删除所有元素值为2的元素
这种方法的优点在于不用考虑vector中元素的位置,但缺点是需要调用两个函数。
在vector中查找string元素 代码
同样可以使用 `std::find` 函数来查找一个字符串元素是否存在于 vector 中,示例代码如下:
```c++
#include <iostream>
#include <vector>
#include <algorithm>
int main() {
std::vector<std::string> vec = {"apple", "banana", "orange", "pear"};
std::string target = "orange";
auto iter = std::find(vec.begin(), vec.end(), target);
if (iter != vec.end()) {
std::cout << "Found " << target << " at index " << std::distance(vec.begin(), iter) << std::endl;
} else {
std::cout << "Not found" << std::endl;
}
return 0;
}
```
在上面的代码中,我们定义了一个存储字符串的 vector,然后使用 `std::find` 函数查找字符串 "orange" 是否存在于 vector 中。如果找到了,函数会返回指向该元素的迭代器,否则返回 vector 的尾部迭代器。我们可以通过判断迭代器是否等于 vector 的尾部迭代器来确定是否找到了目标元素,并可以使用 `std::distance` 函数计算出该元素在 vector 中的下标。