是否可以在堆中分配向量,但通过引用进行访问
Is it possible to allocate vectors in the heap but accessing via reference?
我有一个程序使用了相当多的存储空间(2.5MB(,我使用std::vector将其全部存储在堆栈中。
- 将其保存在堆中是个好主意吗
- 如果是这样的话,可以使用引用向量&当存储的类型是向量*时(因为它们被分配了new(
-
与
std::array
不同,std::vector
本身不存储元素,它总是在堆上分配存储(除非使用自定义分配器(。您的2.5MB进入堆,堆栈上只分配了std::vector
本身(通常是几个指针和12/24字节的大小(。 -
你可以做到:
void foo(std::vector<T>&); std::vector<T>* vec = ...; foo(*vec);
编辑我发现一个重复的问题。投票决定结束这场比赛。
相关文章:
- 在函数内创建的对象的范围 - 如果在函数外部存储和访问引用,它们是否有效?
- 通过引用访问矢量元素是否会降低C++的空间复杂性?
- 形成对对象的引用是否构成访问?
- 错误:未定义对"静脉类型信息::电池访问"的引用
- 如何在 c++ 中通过基类引用访问派生类的对象?
- 项目引用上的QT访问冲突
- 通过引用传递时访问std::vector的元素
- 是否可以在堆中分配向量,但通过引用进行访问
- 为什么静态本地对象可以通过指针或外部引用访问?
- 指针访问和引用访问哪个更快
- 使用指针或引用访问向量,然后对其进行迭代缓存是不友好的
- 使用引用访问类对象C++
- Constexpr 成员函数在通过引用访问时返回不被视为 constexpr 的模板参数
- 使用对基类的引用访问派生类的私有成员函数
- 通过类引用访问和更改矢量
- C++对象引用/访问
- 如何使用常量引用访问 vector<int*> 的元素?
- 无法从引用访问成员变量或方法
- 通过引用访问数组的正确方法是什么?
- 通过引用访问默认实参是否安全