日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

STL源代码分析(ch2 内存分配)uninitialized_fill_n

發布時間:2025/3/21 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 STL源代码分析(ch2 内存分配)uninitialized_fill_n 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1. uninitialized_fill_n(ForwardIter first, Size n, const T& value)

從 first 位置開始,填充 n 個元素值,返回填充結束的位置

template <class ForwardIter, class Size, class T> ForwardIter uninitialized_fill_n(ForwardIter first, Size n, const T& value) {return mystl::unchecked_uninit_fill_n(first, n, value, std::is_trivially_copy_assignable<typename iterator_traits<ForwardIter>::value_type>{}); }

->

template <class ForwardIter, class Size, class T> ForwardIter unchecked_uninit_fill_n(ForwardIter first, Size n, const T& value, std::true_type) {return mystl::fill_n(first, n, value); }template <class ForwardIter, class Size, class T> ForwardIter unchecked_uninit_fill_n(ForwardIter first, Size n, const T& value, std::false_type) {auto cur = first;try{for (; n > 0; --n, ++cur){mystl::construct(&*cur, value);}}catch (...){for (; first != cur; ++first)mystl::destroy(&*first);}return cur; }

1.1 fill_n

// 從 first 位置開始填充 n 個值 template <class OutputIter, class Size, class T> OutputIter fill_n(OutputIter first, Size n, const T& value) {return unchecked_fill_n(first, n, value); }

->

template <class OutputIter, class Size, class T> OutputIter unchecked_fill_n(OutputIter first, Size n, const T& value) {for (; n > 0; --n, ++first){*first = value;}return first; }// 為 one-byte 類型提供特化版本 template <class Tp, class Size, class Up> typename std::enable_if<std::is_integral<Tp>::value && sizeof(Tp) == 1 &&!std::is_same<Tp, bool>::value &&std::is_integral<Up>::value && sizeof(Up) == 1,Tp*>::type unchecked_fill_n(Tp* first, Size n, Up value) {if (n > 0){std::memset(first, (unsigned char)value, (size_t)(n));}return first + n; }

總結

以上是生活随笔為你收集整理的STL源代码分析(ch2 内存分配)uninitialized_fill_n的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。