vector.begin()和end函数
时间: 2024-02-01 14:13:45 浏览: 24
vector是C++标准库中的一个容器,里面存储了一系列的元素。vector.begin()和vector.end()是用来获取vector的迭代器的成员函数。
1. vector.begin()函数返回指向vector第一个元素的迭代器。
例如,如果有一个vector<int> v,那么v.begin()就返回一个指向v中第一个元素的迭代器。
示例代码:
```
vector<int> v = {1, 2, 3, 4, 5};
vector<int>::iterator it = v.begin();
cout << *it << endl; // 输出 1
```
2. vector.end()函数返回指向vector最后一个元素的下一个位置的迭代器。
例如,如果有一个vector<int> v,那么v.end()就返回一个指向v中最后一个元素的下一个位置的迭代器。
示例代码:
```
vector<int> v = {1, 2, 3, 4, 5};
vector<int>::iterator it = v.end();
cout << *(--it) << endl; // 输出 5
```
需要注意的是,vector.end()返回的是一个指向vector最后一个元素的下一个位置的迭代器,因此在使用时需要减一才能得到最后一个元素的迭代器。
相关问题
vector.end
好的,您的问题是关于 vector.end() 函数的用法。在 C++ 中,vector 是一种动态数组,它可以根据需要自动扩展或收缩。而 vector.end() 函数是 vector 类的成员函数之一,它用于返回指向 vector 容器中最后一个元素的下一个位置的迭代器,即“尾后迭代器”。具体来说,如果 vector 容器中有 n 个元素,则 vector.end() 函数返回的迭代器指向下标为 n 的位置,该函数的声明如下:
```c++
iterator end() noexcept;
const_iterator end() const noexcept;
```
其中,iterator 和 const_iterator 都是迭代器类型,分别表示可读写和只读两种迭代器。而 noexcept 关键字表示该函数不会抛出异常。
下面是一个示例程序,演示如何使用 vector.end() 函数:
```c++
#include <iostream>
#include <vector>
int main() {
std::vector<int> vec {10, 20, 30, 40, 50};
for (auto it = vec.begin(); it != vec.end(); ++it) {
std::cout << *it << " ";
}
return 0;
}
```
在上面的示例程序中,我们创建了一个整型 vector 容器 vec,并使用 vec.begin() 函数获取指向第一个元素的迭代器 it,使用 vec.end() 函数获取指向尾后位置的迭代器 end_it,然后使用 for 循环遍历 vec 容器中的所有元素,输出它们的值。需要注意的是,end_it 指向的位置不包含任何元素,所以在使用迭代器遍历容器时,通常将它作为循环条件的终止条件。
输出结果为:
```
10 20 30 40 50
```
vector为空时 begin和end
当 vector 为空时,调用 begin() 和 end() 函数都是合法的,但它们返回的是同一个迭代器,即都指向 vector 的末尾(即指向下标为0的位置)。这是因为 begin() 函数返回指向 vector 第一个元素的迭代器,而 end() 函数返回指向 vector 最后一个元素的下一个位置的迭代器,当 vector 为空时,第一个元素和最后一个元素的下一个位置都不存在,因此 begin() 和 end() 函数返回的是同一个迭代器。