最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++面試八股文之STL標(biāo)準(zhǔn)模板庫(kù)使用詳解

 更新時(shí)間:2023年06月22日 10:50:18   作者:二進(jìn)制架構(gòu)  
這篇文章主要為大家介紹了C++面試八股文之STL標(biāo)準(zhǔn)模板庫(kù)使用詳解,<BR>有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

面試模擬

某日二師兄參加X(jué)XX科技公司的C++工程師開(kāi)發(fā)崗位第21面:

面試官:用過(guò)STL嗎?

二師兄:(每天都用好嗎。。)用過(guò)一些。

面試官:你知道STL是什么?

二師兄:STL是指標(biāo)準(zhǔn)模板庫(kù)(Standard Template Library),是C++區(qū)別于C語(yǔ)言的特征之一。

面試官:那你知道STL的六大部件是什么?

二師兄:分別是容器(container)、迭代器(iterator)、適配器(adaptor)、分配器(allocator)、仿函數(shù)(functor)和算法(algorithm)。

面試官:那你知道有哪些容器嗎?

二師兄:STL中容器的數(shù)量比較多,按照類(lèi)型可以分為順序容器和關(guān)聯(lián)容器。

二師兄:順序容器主要有vector、deque、listforward_listarray。其中forward_listarray是C++11引入的。

二師兄:關(guān)聯(lián)容器主要有set、map、multiset、multimap、unordered_set、unordered_map、unordered_multisetunordered_multiamp。其中后四種是C++11新引入的。

面試官:好的。那你知道迭代器分為哪些種類(lèi)嗎?

二師兄:分別是輸入迭代器(Input Iterator)、輸出迭代器(Output Iterator)、前向迭代器(Forward Iterator)、雙向迭代器(Bidirectional Iterator)和隨機(jī)訪(fǎng)問(wèn)迭代器(Random Access Iterator)。

二師兄:其中輸入和輸出迭代器分別用于讀取和寫(xiě)入數(shù)據(jù),前向迭代器只能向前訪(fǎng)問(wèn)而不能向后訪(fǎng)問(wèn)(forward_list),雙向迭代器既可向前也可向后(list),隨機(jī)訪(fǎng)問(wèn)迭代器可以通過(guò)下標(biāo)訪(fǎng)問(wèn)任何合法的位置(vector)。

面試官:你知道適配器是做什么的嗎?

二師兄:適配器是一種設(shè)計(jì)模式。主要起到將不同的接口統(tǒng)一起來(lái)的作用。STL中的容器適配器如stackqueue,通過(guò)調(diào)用容器的接口,實(shí)現(xiàn)適配器所需的功能。

面試官:有了解過(guò)分配器嗎?

二師兄:分配器主要用于內(nèi)存的分配與釋放。一般容器都會(huì)自帶默認(rèn)分配器,很少會(huì)自己實(shí)現(xiàn)分配器。

面試官:有使用分配器做一些內(nèi)存分配的工作嗎?

二師兄:沒(méi)有。。。

面試官:知道仿函數(shù)是做什么用的嗎?

二師兄:是一個(gè)可執(zhí)行的對(duì)象,類(lèi)型重載了operator()()運(yùn)算符。

struct Add
{
    int operator()(int a, int b) {return a +b;}
}
int a = 42, b = 1024;
auto sum = Add()(a,b);
//OR
Add add;
auto sum = add(1,2);

面試官:STL中常見(jiàn)的算法有哪些?

二師兄:一般分為三類(lèi),查找、排序和數(shù)值操作。

二師兄:查找常用的有std::find、std::find_ifstd::find_first_of等。

二師兄:排序主要用std::sort及其家族的一系列算法。

二師兄:數(shù)值操作主要用std::accumulate求和。

面試官:那你知道STL六大部件之間的聯(lián)系嗎?

二師兄:(想了想)不是特別清楚。。。

面試官:好的,回去等通知吧。

讓我們回顧一下二師兄的表現(xiàn):

有使用分配器做一些內(nèi)存分配的工作嗎?

這里主要是問(wèn)有沒(méi)有手寫(xiě)過(guò)分配器:

template <typename T>
class MyAllocator {
public:
    typedef T value_type;
    MyAllocator() noexcept {}
    template <typename U>
    MyAllocator(const MyAllocator<U>&) noexcept {}
    T* allocate(std::size_t n) {
        if (n > std::size_t(-1) / sizeof(T)) throw std::bad_alloc();
        if (auto p = static_cast<T*>(std::malloc(n * sizeof(T)))) return p;
        throw std::bad_alloc();
    }
    void deallocate(T* p, std::size_t) noexcept {
        std::free(p);
    }
};

實(shí)例中定義了一個(gè)名為MyAllocator的模板類(lèi),它重載了allocatedeallocate運(yùn)算符用于分配內(nèi)存和釋放內(nèi)存。示例中mallocfree函數(shù)來(lái)分配和釋放內(nèi)存,也可以用newdelete。

我們可以在allocatedeallocate中做很多事情,比如我們可以統(tǒng)計(jì)申請(qǐng)和釋放內(nèi)存的總量,可以申請(qǐng)一塊大內(nèi)存做內(nèi)存池等等。

知道STL六大部件之間的聯(lián)系嗎?

這個(gè)問(wèn)題比較開(kāi)放,需要對(duì)STL六大部件有一定的理解。首先是分配器,主要是為容器分配管理內(nèi)存的。其次是迭代器,是容器和算法的橋梁。再次是仿函數(shù),一般用作算法中,適配器提供各種粘合劑的功能,把不同部件之間的接口連接起來(lái)。

以上就是C++面試八股文之STL標(biāo)準(zhǔn)模板庫(kù)使用詳解的詳細(xì)內(nèi)容,更多關(guān)于C++面試STL標(biāo)準(zhǔn)模板庫(kù)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • C++中String類(lèi)常見(jiàn)題目分享

    C++中String類(lèi)常見(jiàn)題目分享

    這篇文章主要為大家詳細(xì)介紹了一些C++中String類(lèi)的常見(jiàn)題目,文中的示例代碼講解詳細(xì),對(duì)我們掌握C++有一定的幫助,感興趣的小伙伴可以了解一下
    2023-06-06
  • 詳解C語(yǔ)言中const關(guān)鍵字的用法

    詳解C語(yǔ)言中const關(guān)鍵字的用法

    這篇文章主要對(duì)C語(yǔ)言中const關(guān)鍵字的用法進(jìn)行了詳細(xì)的分析介紹,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2015-08-08
  • C++實(shí)現(xiàn)指針空值的示例代碼

    C++實(shí)現(xiàn)指針空值的示例代碼

    本文主要介紹了C++實(shí)現(xiàn)指針空值的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • 一篇文章讓你輕松理解C++中vector和list區(qū)別

    一篇文章讓你輕松理解C++中vector和list區(qū)別

    對(duì)于學(xué)c語(yǔ)言的同學(xué)來(lái)說(shuō),vector和list這兩個(gè)東西經(jīng)常會(huì)搞錯(cuò),下面這篇文章主要給大家介紹了關(guān)于C++中vector和list區(qū)別的相關(guān)資料,需要的朋友可以參考下
    2022-01-01
  • C語(yǔ)言數(shù)據(jù)結(jié)構(gòu)創(chuàng)建及遍歷十字鏈表

    C語(yǔ)言數(shù)據(jù)結(jié)構(gòu)創(chuàng)建及遍歷十字鏈表

    這篇文章主要介紹了C語(yǔ)言數(shù)據(jù)結(jié)構(gòu)十字鏈表的創(chuàng)建及遍歷,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪
    2021-10-10
  • N叉樹(shù)的三種遍歷(層次遍歷、前序遍歷、后序遍歷)

    N叉樹(shù)的三種遍歷(層次遍歷、前序遍歷、后序遍歷)

    本文主要介紹了N叉樹(shù)的三種遍歷(層次遍歷、前序遍歷、后序遍歷),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-04-04
  • C語(yǔ)言中讀寫(xiě)交替時(shí)出現(xiàn)的問(wèn)題分析

    C語(yǔ)言中讀寫(xiě)交替時(shí)出現(xiàn)的問(wèn)題分析

    讀寫(xiě)命令交替,一定要使用fseek重新定位,否則出現(xiàn)輸入顯示混亂,這篇文章主要介紹了C語(yǔ)言中讀寫(xiě)交替時(shí)出現(xiàn)的問(wèn)題分析,需要的朋友可以參考下
    2022-12-12
  • 你真的知道C++對(duì)象大小嗎?

    你真的知道C++對(duì)象大小嗎?

    這篇文章主要給大家介紹了關(guān)于C++對(duì)象大小的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • bmp 縮放代碼(BMP位圖任意放大 和縮小)

    bmp 縮放代碼(BMP位圖任意放大 和縮小)

    這篇文章主要介紹了bmp 縮放代碼(BMP位圖任意放大 和縮小),需要的朋友可以參考下
    2016-04-04
  • C語(yǔ)言聯(lián)合體的實(shí)現(xiàn)示例

    C語(yǔ)言聯(lián)合體的實(shí)現(xiàn)示例

    C語(yǔ)言聯(lián)合體是一種特殊的數(shù)據(jù)結(jié)構(gòu),它允許在相同的內(nèi)存位置存儲(chǔ)不同的數(shù)據(jù)類(lèi)型,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-11-11

最新評(píng)論

遵义县| 高雄县| 阳谷县| 金阳县| 清河县| 安达市| 山丹县| 通河县| 施秉县| 抚顺市| 米脂县| 宝清县| 清水河县| 随州市| 北辰区| 探索| 九江县| 瓮安县| 双流县| 开平市| 东港市| 阿拉尔市| 扶余县| 嘉善县| 廉江市| 宁都县| 南皮县| 永吉县| 林口县| 赫章县| 上犹县| 原平市| 盐源县| 建平县| 定兴县| 永顺县| 彰武县| 岳阳县| 瑞昌市| 广汉市| 裕民县|