std::vector中assign resize reserve的区别

Posted 蜕变之旅

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

 

以上是关于std::vector中assign resize reserve的区别的主要内容,如果未能解决你的问题,请参考以下文章

为啥在 C++11 中更改了 std::vector::resize 签名?

为啥 std::vector::resize(n, src) 按值传递?

如果 std::vector::resize 的 size 参数等于当前大小怎么办?

保留后使用 std::vector::data

std::vector 向下调整大小

如何在调整大小的 std::vector 的最后一个元素之后插入?