如何在不支持auto关键字的编译器中遍历自定义的vector<Pair>容器?
如何在不支持auto关键字的编译器中遍历自定义的vector容器?
嘿,我来帮你搞定这个问题!既然你的编译器不支持auto关键字,那咱们就用老编译器完全兼容的传统方法来遍历这个vector<Pair>,主要有两种常用且靠谱的方式:
1. 使用迭代器遍历
因为没法用auto自动推导迭代器类型,咱们得明确写出迭代器的完整类型vector<Pair>::iterator——这是STL容器遍历的标准做法,代码示例如下:
vector<Pair> V; // 先假设V已经被填充了若干Pair元素 // 定义迭代器变量 vector<Pair>::iterator it; // 从容器起始位置遍历到末尾 for (it = V.begin(); it != V.end(); ++it) { // 访问当前Pair对象的成员,两种写法都可行: // 方法一:箭头运算符(更简洁,推荐) it->clear(); // 调用Pair类的clear方法 // 比如访问public成员m_Tip:it->m_Tip // 方法二:先解引用迭代器,再用点运算符 (*it).clear(); }
如果你的vector是const类型(不想修改其中元素),记得把迭代器换成vector<Pair>::const_iterator,这样就只能读取元素而不能修改啦。
2. 使用下标遍历
这种方式更直观,和遍历普通数组的逻辑差不多,用整数索引来访问容器里的元素,代码示例:
vector<Pair> V; // 假设V已经有元素了 // 用size_t类型的索引(匹配vector.size()的返回值类型) for (size_t i = 0; i < V.size(); ++i) { // 直接通过下标访问第i个Pair对象 V[i].clear(); // 访问public成员:V[i].m_Entry }
这种写法逻辑清晰,对新手友好,老编译器肯定能完美兼容。
备注:内容来源于stack exchange,提问作者Dastoger Bashar
相关产品推荐
相关产品推荐

