当我将其插入无序地图时,矢量的容量为 0
capacity of vector is 0 when i am inserting it into an un-ordered map
我保留了一个大小为 40 的向量,但是当我将其作为一对插入无序映射时,向量容量变为 0。
#include<vector>
#include <iostream>
#include <unordered_map>
using namespace std;
int main() {
std::vector<int> a;
a.reserve(40);
std::cout<<a.capacity()<<std::endl;
std::unordered_map<int,vector<int>> _map;
_map.insert(std::make_pair(1,a));
std::cout<<_map[1].capacity()<<std::endl;
return 0;
}
make_pair
将复制构造 (6( 一个新向量,该向量不保留容量。
您也可以改为强制移动构造函数 (7(,该构造函数确实通过使用std::move
保留容量,但这过于复杂。
_map.insert(std::make_pair(1, std::move(a)));
与其保留容量,我建议您在构建向量时简单地保留大小。
std::vector<int> a(40);
构造
std::vector
的副本不需要保留从中构造它的副本的对象的容量。只需要保留内容。
从 https://en.cppreference.com/w/cpp/container/vector/vector:
复制构造函数。使用其他内容的副本构造容器。
相关文章:
- 使用C++库在Android项目中修改gradle中的cmake参数,用于插入指令的测试
- 有关插入适配器的错误。[错误]请求从 'back_insert_iterator<vector<>>' 类型转换为非标量类型
- 预处理器:插入结构名称中的前一个行号
- 在未初始化映射的情况下,将值插入到映射的映射中
- 如何在c++中只将键插入到bimap的一侧
- 如何将结构插入到集合中并打印集合的成员
- C++json插入数组
- Visual Studio 2019:插入多个C++风格的单行注释
- nlohmann-json将一个数组插入到另一个数组中
- 有效地使用std::unordered_map来插入或增加键的值
- 为字符串中每 N 个字符插入空格的函数没有按照我认为的方式工作?
- 正在插入动态数组
- 插入或删除时获取usb的dos_name
- 具有非整数边容量的最大流量的Dinic算法
- 叮叮当当在修复时插入多个"覆盖"说明符
- 将stl字符串缩小到小于15个字符的容量
- 当我将其插入无序地图时,矢量的容量为 0
- 使用准备好的语句大容量插入到postgresql
- 插入元素后矢量容量增加
- STL矢量:当矢量容量因插入而增加时,在分配新的连续内存后,是否删除或保留旧的连续内存