判断迭代器是否到最后一个元素
时间: 2023-12-15 14:07:01 浏览: 38
可以使用迭代器的end()函数来判断迭代器是否到最后一个元素。如果迭代器等于end()函数返回的迭代器,则表示已经到达最后一个元素。例如:
```
vector<int> vec = {1, 2, 3};
auto it = vec.begin();
while (it != vec.end()) {
// 遍历元素
++it;
}
if (it == vec.end()) {
// 已经到达最后一个元素
}
```
相关问题
c++ 怎么得到set最后一个元素的迭代器
可以使用`std::set`的成员函数`std::set::end()`获取到末尾迭代器,然后使用`std::prev()`函数获取到前一个迭代器即可,代码如下:
```cpp
#include <iostream>
#include <set>
int main() {
std::set<int> s = {1, 3, 5, 7, 9};
auto last = std::prev(s.end()); // 获取最后一个元素的迭代器
std::cout << *last << std::endl; // 输出最后一个元素的值,此处为 9
return 0;
}
```
注意,如果`std::set`是空的,那么调用`std::prev(s.end())`将会导致未定义行为。因此,在使用`std::prev()`之前,应该先判断集合是否为空。
vector,如何取到最后一个元素
如果你是使用 C++ STL 的 vector,你可以通过下标或者迭代器来获取最后一个元素。具体方法如下:
1. 下标方式:使用 `vector::size()` 获取元素个数,然后使用下标 `[]` 访问最后一个元素,下标为 `size() - 1`。
```cpp
std::vector<int> vec = {1, 2, 3, 4, 5};
int last_element = vec[vec.size() - 1]; // 获取最后一个元素
```
2. 迭代器方式:使用 `vector::end()` 获取尾后迭代器,然后使用 `std::prev` 函数获取最后一个元素的迭代器,最后使用 `*` 解引用得到最后一个元素。
```cpp
std::vector<int> vec = {1, 2, 3, 4, 5};
int last_element = *(std::prev(vec.end())); // 获取最后一个元素
```
需要注意的是,如果 vector 是空的,这两种方法都会导致未定义行为。因此,在访问最后一个元素之前,最好先判断一下 vector 是否为空。