c++ vector.end()
时间: 2023-11-01 18:57:41 浏览: 54
c vector.end() 是vector的一个成员函数,用于获取向量的最后一个元素之后的位置。它返回的是一个指向向量的 past-the-end 元素的迭代器。在你提供的例子中,it = vector1.end()-1;这一行代码实际上是获取了向量vector1的最后一个元素,并将其赋值给迭代器it。
相关问题
C++ vector.erase
C++中的vector.erase()函数用于从vector中删除指定位置或指定范围的元素。它有不同的使用方法,引用和引用提供了两个错误的使用实例,而引用提供了正确的写法。
在错误的使用实例中,都是在遍历vector的过程中直接使用erase()函数删除元素。这是错误的,因为在使用erase()函数删除一个元素后,iterator指向的位置会被无效化,导致遍历出错。正确的写法是在删除元素后,将iterator自增,以确保遍历的正确。
下面是正确的写法:
vector<int> array;
array.push_back(100);
array.push_back(300);
array.push_back(300);
array.push_back(300);
array.push_back(300);
array.push_back(500);
vector<int>::iterator itor;
for (itor = array.begin(); itor != array.end();){
if (*itor == 300) {
itor = array.erase(itor);
} else {
itor++;
}
}
for (itor = array.begin(); itor != array.end(); itor++){
cout << *itor << " ";
}
在这个正确的写法中,我们在删除元素后使用了itor++来更新iterator的位置,以确保遍历的正确性。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* *3* [C++之vector的erase使用](https://blog.csdn.net/sinat_31608641/article/details/108478756)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"]
[ .reference_list ]
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
```
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)