在类 std::vector 中使用迭代器
Use iterator in class std::vector
我有一个类
class node{
public:
char name[5];
int number
}
我将一些节点添加到名为 node_list
的向量中
vector <node*> node_list;
我想搜索所有节点并获取node_list
中的数据,如何使用迭代器来实现这一点?
我写了一个错误的代码,我不知道如何正确地做。这是我的代码。
vector <node*>::iterator iter;
for (i = 5; i > 0; i-- ) {
for (iter = node_list.begin(); iter != node_list.end(); iter++) {
cout<<iter->number;
}
}
编译后我用Visual Studio跟踪iter
,它是内存的地址,所以它像指针吗?如果我想在节点中获取number
或name[5]
,我该怎么办?
使用基于范围的 for 循环:
for (auto &x : node_list) {
cout << x->number;
}
或:
for (auto iter = node_list.begin(); iter != node_list.end(); ++iter) {
cout << (*iter)->number;
}
注意:(*iter)
键入node*
相关文章:
- std::vector::迭代器是否可以合法地作为指针
- 为什么 vector 的随机访问迭代器给出与指针不同的内存地址?
- 修改 std::vector 会使迭代器无效吗?
- 计算两个迭代器之间的距离时"Vector Iterators Incompatible"
- 从 std::vector 迭代器中执行函数指针
- 编译错误 std::vector<std::shared_ptr<T>>迭代器和擦除方法
- std::vector::erase() 真的会在擦除时使迭代器失效吗?
- 如果我在下面的代码中使用 list 而不是 vector,为什么在我尝试在迭代器之间执行减法的行中编译失败?
- C++ std::vector语言 - 如何修改迭代器指定的元素?
- 迭代器返回 vector::begin()
- 使用 std::vector<Particle> 粒子;函数 .at() 不能与迭代器一起使用,它作为 for 循环中的参数
- c std :: vector迭代器构造函数,first == last
- C++迭代器作为 lambda 函数中的参数,断言失败:"vector iterators incompatible"
- 在类 std::vector 中使用迭代器
- 为什么 std::vector 迭代器在 erase() 调用后失效?
- 为每个循环中的std :: vector的当前元素分配迭代器
- 使用正向迭代器反向迭代 std::vector
- 英特尔检查器 XE 2012 警告 #12367 - 将迭代器参数切片传递给 vector::erase()
- 迭代器 - vector::itrator 和 array::iterator 的重载函数
- 向量迭代器 > vector.end() 即使向量不应该被重新分配