none
关于标准库vector的实现 RRS feed

  • 问题

  • 关于STL vector的实现
    vector的构造函数
    template<class _Iter>
    vector(_Iter _First, _Iter _Last)

    vector(size_type _Count, const _Ty& _Val)冲突
    比如  使用vector<int> v(3, 1)实际上会调用前者而非后者,这个问题应该怎么解决呢?怎么保证前者的参数_Iter是非整数?

    还有个问题
    vector的重载成员函数
    iterator begin()
    const_iterator begin() const
    他们是靠什么区分的?什么时候调用前者,什么时候调用后者

    2010年6月13日 17:13

答案

  • vector<int> v(static_cast<size_t>(3), 1);

    这两个函数没有什么区别,只是第二个函数通过传入参数进行了萃取。选择相应的类型。

    当vector是const或者,vector作为成员变量在const方法中被使用时,会调用begin的const 版本。


    麻烦把正确答案设为解答。
    2010年6月15日 1:20
    版主

全部回复

  • vector<int> v(static_cast<size_t>(3), 1);

    这两个函数没有什么区别,只是第二个函数通过传入参数进行了萃取。选择相应的类型。

    当vector是const或者,vector作为成员变量在const方法中被使用时,会调用begin的const 版本。


    麻烦把正确答案设为解答。
    2010年6月15日 1:20
    版主
  • 第一个问题,我的意思是不是说怎么调用. 标准的vector实现不需要静态转换就能区分两者,而我实现的版本则必须通过myvector<int> v(static_cast<size_t>(3), 1)才能通过编译.那么标准库是怎么实现的呢

    2010年6月28日 18:27