【发布时间】:2012-08-10 18:23:15
【问题描述】:
我有以下向量:
std::vector< std::pair<std::string,bool > > myvec;
如何使用迭代器浏览和打印向量的元素?
【问题讨论】:
标签: c++ oop vector iterator std-pair
我有以下向量:
std::vector< std::pair<std::string,bool > > myvec;
如何使用迭代器浏览和打印向量的元素?
【问题讨论】:
标签: c++ oop vector iterator std-pair
你有什么问题?
typedef std::vector<std::pair<std::string, bool> > vector_type;
for (vector_type::const_iterator pos = myvec.begin();
pos != myvec.end(); ++pos)
{
std::cout << pos->first << " " << pos->second << std::endl;
}
或者您可以将std::for_each 与一些仿函数一起使用。
【讨论】:
std 命名空间中,因此重载需要放在 std 命名空间中。但是,不允许在 std 命名空间中声明重载。
typedef 定义为vector 并定义const_iterator 当我更改相同的代码时,您会收到错误消息,因为我使用的是find_if。
Container::iterator iter = myContainer.begin())for-循环中,遍历所有元素(iterator 有operator++;结束条件是 - 检查迭代器是否已到达容器的end,例如:iter != myContainer.end())
operator->。std::pair 就像一个具有两个字段的结构 - first 和 second,因此您可以打印向量的元素,例如:iter->first 和 iter->second。【讨论】: