c++如何用迭代器循环遍历vector中的vector
时间: 2023-12-03 22:40:08 浏览: 169
以下是使用迭代器循环遍历vector中的vector的c++代码示例:
```c++
#include <iostream>
#include <vector>
using namespace std;
int main() {
vector<vector<int>> vec{{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
// 使用迭代器循环遍历vector中的vector
for (auto it = vec.begin(); it != vec.end(); ++it) {
for (auto itt = it->begin(); itt != it->end(); ++itt) {
cout << *itt << " ";
}
cout << endl;
}
return 0;
}
```
输出结果为:
```
1 2 3
4 5 6
7 8 9
```
相关问题
C++利用迭代器怎么遍历vector中间部分数据,写出代码
在C++中,你可以使用迭代器来遍历`std::vector`的中间部分数据,迭代器提供了一种安全的方式来逐个访问容器中的元素。假设我们有一个`vector<int>`,你想从索引`mid`开始到结尾进行遍历,这里是一个例子:
```cpp
#include <iostream>
#include <vector>
int main() {
std::vector<int> vec = {1, 2, 3, 4, 5, 6, 7, 8, 9}; // 示例vector
size_t mid = vec.size() / 2; // 假定中间位置
// 使用begin和end函数获取迭代器
auto it_start = vec.begin();
auto it_end = vec.end();
// 移动迭代器到中间位置
advance(it_start, mid); // 进行偏移
// 遍历中间部分
for (auto it = it_start; it != it_end; ++it) {
std::cout << *it << " ";
}
return 0;
}
```
在这个例子中,`advance()`函数将`it_start`移动到了指定的索引位置,然后通过`for`循环,从那个位置开始到`vec.end()`,打印出中间部分的所有元素。
C++如何使用迭代器倒叙遍历vector
在C++中,可以使用`std::vector`的反向迭代器(`reverse_iterator`)来进行倒序遍历。以下是两种方法:
1. **使用`rbegin()`和`rend()`**[^1]:
```cpp
for(std::vector<int>::reverse_iterator it=myvec.rbegin();it!=myvec.rend();++it) {
cout << *it << endl;
}
```
`rbegin()`返回的是一个指向`vector`首元素的反向迭代器,而`rend()`则指向`vector`结束位置之前的位置。每次迭代,`it`都会向前移动一步,直到到达开头。
2. **手动从`end()-1`开始递减**:
```cpp
for(std::vector<int>::iterator it=myvec.end()-1;it>=myvec.begin();it--) {
cout << *it << endl;
}
```
这里从`end()`减去1作为起始点,然后迭代到`begin()`。需要注意,当`it`等于`begin()`时,表示已经到达数组的开头,此时应停止循环。
阅读全文
相关推荐















