第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

您使用哪些C ++標準庫包裝函數(shù)?

您使用哪些C ++標準庫包裝函數(shù)?

C++
湖上湖 2019-12-09 10:58:56
今天早上問的這個問題使我想知道您認為C ++標準庫中缺少哪些功能,以及如何通過包裝函數(shù)來填補空白。例如,我自己的實用程序庫具有用于矢量附加的此功能:template <class T>std::vector<T> & operator += ( std::vector<T> & v1,                               const std::vector <T> & v2 ) {    v1.insert( v1.end(), v2.begin(), v2.end() );    return v1;}這個用于清除(或多或少)任何類型的類型-對于諸如std :: stack之類的東西特別有用:template <class C>void Clear( C & c ) {    c = C();}我還有更多,但是我對您使用的是哪個感興趣?請限制對包裝函數(shù)的回答-即最多兩行代碼。
查看完整描述

3 回答

?
鴻蒙傳說

TA貢獻1865條經(jīng)驗 獲得超7個贊

包含(容器,val)(非常簡單,但很方便)。


template<typename C, typename T>

bool contains(const C& container, const T& val) {

   return std::find(std::begin(container), std::end(container), val) != std::end(container);

}

remove_unstable(開始,結(jié)束,值)


一種更快的std :: remove版本,但它不保留其余對象的順序。


template <typename T> 

T remove_unstable(T start, T stop, const typename T::value_type& val){  

    while(start != stop) {      

        if (*start == val) {            

            --stop;             

            ::std::iter_swap(start, stop);      

        } else {            

            ++start;        

        }   

    }   

    return stop; 

}

(在pod類型(int,float等)的向量的情況下,幾乎所有對象都被刪除了,std :: remove可能會更快)。


查看完整回答
反對 回復(fù) 2019-12-09
?
HUWWW

TA貢獻1874條經(jīng)驗 獲得超12個贊

通常,我會以向量的形式使用矢量,而沒有特定的順序(很明顯,當(dāng)我不需要快速的“設(shè)置此元素”檢查時)。在這些情況下,調(diào)用delete()會浪費時間,因為它將對元素進行重新排序,而我不在乎順序。這就是下面的O(1)函數(shù)派上用場的時候-只需將最后一個元素移到要刪除的元素的位置即可:


template<typename T>

void erase_unordered(std::vector<T>& v, size_t index)

{

    v[index] = v.back();

    v.pop_back();

}


查看完整回答
反對 回復(fù) 2019-12-09
  • 3 回答
  • 0 關(guān)注
  • 450 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號