【问题标题】:Browse vector with std::vector<std::pair < > >使用 std::vector<std::pair < > > 浏览向量
【发布时间】:2012-08-10 18:23:15
【问题描述】:

我有以下向量:

std::vector< std::pair<std::string,bool > > myvec;

如何使用迭代器浏览和打印向量的元素?

【问题讨论】:

    标签: c++ oop vector iterator std-pair


    【解决方案1】:

    你有什么问题?

    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
    【解决方案2】:
    1. 创建迭代器,指向向量的第一个元素(语法:Container::iterator iter = myContainer.begin()
    2. for-循环中,遍历所有元素(iteratoroperator++;结束条件是 - 检查迭代器是否已到达容器的end,例如:iter != myContainer.end()
    3. 迭代器就像指针,要访问它的成员,请使用operator-&gt;
    4. std::pair 就像一个具有两个字段的结构 - firstsecond,因此您可以打印向量的元素,例如:iter-&gt;firstiter-&gt;second

    【讨论】:

      猜你喜欢
      • 2013-08-18
      • 2011-01-01
      • 1970-01-01
      • 2011-10-29
      • 2013-03-08
      • 2023-02-16
      • 1970-01-01
      • 2021-09-03
      • 1970-01-01
      相关资源
      最近更新 更多