none
关于stl迭代器转换问题 RRS feed

  • 问题

  • //T.h
    ...
    class T{
    ...
    };

    typedef std::vector<T> Ts;
    function(std::vector<Ts>::iterator it);
    ...

    /***************************/
    //T.cpp

    Ts  &m_t;
    function(&m_t);//error

    问题:
    如何得到满足function形参类型的m_t?

    2009年9月25日 2:15

答案

  • 可以把迭代器认为是指针,但是不能将指针直接转换为迭代器,迭代器的运算符是经过重载的
    要传入符合function的参数需要定义
    可以是
    Ts m_t;
    function(m_t.begin());
    具体看function的作用传入对应的iterator
    • 已标记为答案 Tim Li 2009年10月9日 8:16
    2009年9月29日 6:41

全部回复

  • std::vector<Ts> -> std::vector<std::vector<T>>
    那么std::vector<Ts> 迭代器的dereference &就是TS.
    麻烦把正确答案设为解答。
    2009年9月25日 3:47
    版主
  • 对,你说的很正确。但是,我遇到的问题是要由&Ts到std::vector<Ts>迭代器,指针到迭代器的转换不能成立,我对此有疑问,故而发帖
    2009年9月25日 4:32
  • 可以把迭代器认为是指针,但是不能将指针直接转换为迭代器,迭代器的运算符是经过重载的
    要传入符合function的参数需要定义
    可以是
    Ts m_t;
    function(m_t.begin());
    具体看function的作用传入对应的iterator
    • 已标记为答案 Tim Li 2009年10月9日 8:16
    2009年9月29日 6:41