📅  最后修改于: 2023-12-03 14:59:47.087000             🧑  作者: Mango
在C++中,STL中的vector是一个非常有用的容器类,其作用是存储动态数组。vector类提供了许多便捷的方法来操作数组。本文主要介绍vector类中的begin()和end()方法。
vector::begin()方法返回一个指向容器第一个元素的迭代器。这个迭代器可以用来遍历整个vector。
vector<int> vec = {1, 2, 3, 4};
vector<int>::iterator it = vec.begin();
cout << *it; // 输出 1
在这个示例中,我们使用vector::begin()方法获取了vector中的第一个元素,并将其赋值给一个迭代器。接着,我们输出这个迭代器所指向的元素,即1。
vector::end()方法返回一个指向容器末尾的下一个位置的迭代器。需要注意的是,这个迭代器并不指向vector的最后一个元素,而是指向末尾的下一个位置,因此不能将其解引用。
vector<int> vec = {1, 2, 3, 4};
vector<int>::iterator it = vec.end();
cout << *it; // 这里会输出未定义的值,因为it不能被解引用
在这个示例中,我们使用vector::end()方法获取了vector的末尾位置,并将其赋值给一个迭代器。然后我们尝试解引用这个迭代器,但这样做是错误的,因为这个迭代器并不指向任何元素。
我们可以使用begin()和end()方法来遍历一个vector。通常我们使用C++11中引入的range-based for循环来遍历vector,代码如下:
vector<int> vec = {1, 2, 3, 4};
// 使用range-based for循环遍历vector
for (int& i : vec) {
cout << i << " "; // 输出 1 2 3 4
}
在这个示例中,我们使用range-based for循环遍历vector,将其元素依次输出。
在STL的vector类中,begin()和end()方法是非常有用的方法,它们可以使我们方便地遍历vector中的元素。需要注意的是,end()方法返回的迭代器并不指向末尾元素,而是指向末尾的下一个位置,不能将其解引用。