gpt4 book ai didi

c++ - 使用插入时自动调整 std::vector 的大小

转载 作者:行者123 更新时间:2023-11-27 23:49:53 27 4
gpt4 key购买 nike

将元素插入到 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

关于c++ - 使用插入时自动调整 std::vector 的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47296813/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com