std::vector中assign resize reserve的區別


1.assign 用於初始化

 

2.resize 改變capacity,與size

 

3.reserve 改變capacity,不改變size

   超過size的capacity不可直接訪問,可通過push_back追加,若size < capacity, push_back操作不盡心內存分配。

測試代碼:

#include <stdio.h>
#include <iostream>
#include <vector>
#include <string>

void ShowInfo(const std::string& info, const std::vector<char>& vec)
{
    std::cout << info << ":" 
        << "capacity=" << vec.capacity() 
        << ", " 
        << "size=" << vec.size() 
        << std::endl;
}

int main()
{
    std::vector<char> vecTest;
    
    vecTest.assign(5, 0);
    ShowInfo("assign", vecTest);

    vecTest.resize(10);
    ShowInfo("resize", vecTest);

    vecTest.reserve(15);
    ShowInfo("reserve", vecTest);

    vecTest.resize(10);
    ShowInfo("resize to 10", vecTest);

    system("pause");

    return 0;
}

結果:

assign:capacity=5, size=5
resize:capacity=10, size=10
reserve:capacity=15, size=10
resize to 10:capacity=15, size=10

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM