使用插入时自动调整标准::矢量的大小
Auto resize std::vector when I use insert
将
元素插入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。
相关文章:
- 为char数组调整zlib-zpipe
- 使用CMake检测支持的C++标准
- 如何理解C++标准N3337中的expr.const.cast子句8
- 调整大小后指向元素值的指针unordered_map有效?
- "throw expression code" 1e7 >返回 d 是什么?投掷标准::overflow_error( "too big" ) : d;意味 着?
- 编译标准库类型
- 在C++中调整向量中的索引
- 标准是否使用多余的大括号(例如 T{{{10}}})定义列表初始化?
- 编译器如何在使用SFINAE的函数和标准函数之间确定两者是否可行
- 哪些库可以通过Opencv调整曝光率
- 铸造标准::有没有回到原来的类型
- 标准 N3337 5.2.10 第 7 条中的C++"类型"是什么意思?
- this_thread::sleep_for和计时时钟之间的关系是否由C++11标准指定
- 标准库类型的赋值运算符的引用限定符
- 标准是否严格定义了该程序应该如何编译?
- 标准::唯一和矢量::调整大小
- 如何调整标准::字符串的大小以删除所有空终止符字符?
- 使用插入时自动调整标准::矢量的大小
- 标准::矢量调整大小算法
- C++:标准::矢量::调整大小与 "normal"分配