使用插入时自动调整标准::矢量的大小

Auto resize std::vector when I use insert

本文关键字:标准 调整 插入      更新时间:2023-10-16

元素插入std::vector的特定位置的优雅方法是什么?如果 std::vector 的大小小于一个位置。

例如:

#include <iostream>
#include <vector>
using namespace std;
int main() {
    vector<int> vec(8);
    vec.insert(vec.begin() + 200, 5); // fail, I need auto-resize
}

使用 std::vector::resize ,并带有适当的参数。假设您有:

std::vector<int> vec(8);

只需使用:

vec.resize(201);
vec.insert(vec.begin() + 200, 5);

你也可以把它包装在你自己的模板函数周围,它可以检查可能需要的分配:

template<class T>
void safe_insert(std::vector<T>& vec, const size_t pos, const T arg)
{
    if(vec.size() <= pos) vec.resize(pos);
    vec.insert(vec.begin() + pos, arg);
}

这样称呼它:

std::vector<int> vec(8);
safe_insert(vec, 200, 5);
std::cout << vec[200];

代码输出:5