请教iterator 的&*用法。
如:template <class iterator>
  void  DoSearch(stContext& Context, iterator gstart, iterator gend)
用法:
DoSearch(m_Context, &*m_contentcache.begin(), &*m_contentcache.end());和DoSearch(m_Context, m_contentcache.begin(), m_contentcache.end());
有什么区别begin和end的函数是这样的。std::reverse_iterator<const_conv_iterator> begin() const;std::reverse_iterator<const_conv_iterator> end() const;
什么情况下是一样的谢谢各位。

解决方案 »

  1.   

    m_contentcache.begin() 返回的是一个迭代器,假如 m_contentcache 是 vector<string>m_contentcache.push_back("这是第一个数据");
    那 vector<string>::itorater itor = m_contentcache.begin();所以*m_contentcache.begin() = "这是第一个数据";完了再&*m_contentcache.begin() 就是取 字符串的地址了。
      

  2.   

    补充一下:
    typedef _const_iterator<MyDSTRU>  const_conv_iterator;struct MyDSTRU

      char Ser;
    };
      

  3.   


    谢谢,
    然后再到DoSearch里的情况又是怎样呢?template <class iterator>
      void DoSearch(stContext& Context, iterator gstart, iterator gend)
      

  4.   

    template <class iterator>
      void DoSearch(stContext& Context, iterator gstart, iterator gend)iterator 迭代就是相当于 指针。这个就是很好理解了, 传入开始和结束的指针, 然后查找。
      

  5.   

    然后 &*m_contentcache.begin() 就是取 字符串的地址了怎么转变成 iterator gstart 这个实参?
      

  6.   


    究竟iterator 迭代 和 指针  的情况如何?
      

  7.   


    这里有些想不明白vs6和vs2003下可能可以当成指针。
    vs2008下出不少问题,势必想完全搞懂这些含义。
      

  8.   

    iterator 经过 &* 后还能回到 iterator ?如果是 在 end()位置会如何呢?
      

  9.   


    iterator的定义不就是类的指针么
    class<T>XX
    {typedef T* iterator;//如此
    }
      

  10.   

    stl什么的剖析,侯捷写的,建议你看看~