itoa用法学习

2022年10月29日 83点热度 0人点赞 0条评论

作者:book_02
链接:https://www.jianshu.com/p/ffdb4c681392
来源: 简书
著作权归作者所有. 商业转载请联系作者获得授权, 非商业转载请注明出处.

file

iota 用一个从 value 递增的数列给 [first, last) 的容器赋值, 等效于:

*(d_first)   = value;
*(d_first+1) = ++value;
*(d_first+2) = ++value;
*(d_first+3) = ++value;
...

C++11 才引入, 之前版本没有此函数

头文件

#include <numeric>

名称来源: iota 是希腊语的第九个字母, 读 [aɪ'otə], 这个名称是从 APL 编程语言借鉴过来的.

内部实现

源码里面确实也是用 for 循环赋值的:

  template<typename _ForwardIterator, typename _Tp>
    _GLIBCXX20_CONSTEXPR
    void
    iota(_ForwardIterator __first, _ForwardIterator __last, _Tp __value)
    {
      // concept requirements
      __glibcxx_function_requires(_Mutable_ForwardIteratorConcept<
                  _ForwardIterator>)
      __glibcxx_function_requires(_ConvertibleConcept<_Tp,
        typename iterator_traits<_ForwardIterator>::value_type>)
      __glibcxx_requires_valid_range(__first, __last);

      for (; __first != __last; ++__first)
    {
      *__first = __value;
      ++__value;
    }
    }

rainbow

没什么大用的码农; 贴图怪; bug制造者; 只会电脑开关机的开发;

文章评论