std::vector遍历
时间: 2023-09-15 21:21:02 浏览: 88
使用std::vector的迭代器可以方便地遍历vector中的元素。以下是两种常见的遍历方式:
1. 使用auto关键字和范围for循环遍历vector:
```c++
std::vector<int> vec{1, 2, 3, 4, 5};
for(auto i: vec){
std::cout << i << " ";
}
```
2. 使用迭代器遍历vector:
```c++
std::vector<int> vec{1, 2, 3, 4, 5};
for(std::vector<int>::iterator it = vec.begin(); it != vec.end(); ++it){
std::cout << *it << " ";
}
```
其中,vec.begin()返回vector的第一个元素的迭代器,vec.end()返回vector最后一个元素之后的迭代器。在循环中使用*it获取当前迭代器指向的元素。
相关问题
std::vector 遍历
std::vector的遍历方法有几种。一种方法是使用for循环迭代器输出,即使用C++11中新增的标准库容器的cbegin()和cend()函数来遍历vector元素。这种方法使用一个迭代器来遍历vector,并通过解引用操作符(*)访问每个元素。
另一种方法是使用for_each函数结合仿函数来遍历vector。这种方法使用一个仿函数来作为for_each函数的参数,通过重载仿函数的()运算符来实现对vector元素的输出。
还有其他一些遍历方法,具体可以参考《论C11中vector的N种遍历方法》这篇文章。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* [std::vector使用要点总结](https://blog.csdn.net/u011832525/article/details/109499404)[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_2"}}] [.reference_item style="max-width: 50%"]
- *2* *3* [c++语言中的遍历](https://blog.csdn.net/jsxyhelu2015/article/details/108251596)[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_2"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
std::vector 遍历出指定元素后从 vector 中删除该元素
在 C++ 中,可以使用 std::vector 的 erase() 函数来删除 vector 中的元素,配合迭代器可以删除指定元素。
例如,我们要遍历 vector,找到值为 3 的元素并删除:
```cpp
std::vector<int> vec = {1, 2, 3, 4, 5};
for (auto it = vec.begin(); it != vec.end(); ++it) {
if (*it == 3) {
vec.erase(it);
break;
}
}
```
上述代码中,我们使用迭代器遍历 vector 中的元素,当找到值为 3 的元素时,使用 erase() 函数删除该元素,并使用 break 跳出循环。
需要注意的是,使用 erase() 函数删除元素后,原来的迭代器会失效,因此要在 erase() 函数之前先保存该元素的迭代器,以便后续使用。
如果要删除 vector 中所有值为 3 的元素,可以使用 std::remove() 函数结合 erase() 函数:
```cpp
std::vector<int> vec = {1, 2, 3, 4, 5, 3};
vec.erase(std::remove(vec.begin(), vec.end(), 3), vec.end());
```
上述代码中,我们使用 std::remove() 函数将所有值为 3 的元素移动到 vector 的末尾,并返回移动后的新的“逻辑”结尾迭代器,然后使用 erase() 函数删除新的“逻辑”结尾迭代器之后的所有元素。
阅读全文