c++ - vector 指针内存分配 vector

标签 c++

首先我想说的是,我有一个 vector ,里面有数千个 vector 。这些内部 vector 中的每一个内部都有数千个数字。我想尽可能地保持内存管理安全和内存使用。

我想问下有没有类似下面的代码

    int size = 10;
vector<vector<double>>* something = new vector<vector<double>>(size);

vector<double>* insideOfSomething;
for(int i = 0; i < size; i++){
    insideOfSomething = &(something->at(i));
    //...
    //do something with insideOfSomething 
    //...
}

我知道将在堆中创建“某物”。我不明白的是 vector 的放置位置,“insideOfSomething”点?如果它们是在堆栈中创建的,那么这意味着我有一个 vector 指针,它指向堆中的一个 vector ,其中包含在堆栈中创建的 vector ? (我现在很困惑。)

如果我有类似下面的代码;

    vector<vector<double>*>* something = new vector<vector<double>*>(size);
vector<double>* insideOfSomething;
for(int i = 0; i < size; i++){
    something->at(i) = new vector<double>();
    insideOfSomething = something->at(i);
    //...
    //do something with inside insideOfSomething 
    //...
}

知道我所有的 vector 都存储在堆中,对吗?

根据内存管理,哪个更有用?

最佳答案

你应该避免在堆上分配 vector ,而只是在堆栈上声明它们,因为 vector 会为你管理它在堆上的对象。在任何你想避免创建拷贝的地方,你可以只使用引用或 const 引用(这是必要的)。

vector<vector<double> > something(size);

for(int i = 0; i < size; i++)
{
    vector<double> &insideOfSomething = something.at(i);

    //use insideOfSomething
}

关于c++ - vector 指针内存分配 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9487926/

相关文章:

c++ - 右值与临时值

c++ - 使用 Int 的初始化列表初始化 Long Double 的 vector

c++ - 将 C++ 11 的 for-range 语法用于顺序对的方法?

c++ - : when we press and hold,程序只做一次怎么办?

C++ 无法将派生类转换为基类

c++ - 智能指针和数组

C++:如何阻止 .msc 和 .cpl 类型的应用程序?

c++ - 如何让 VS2013 停止生成对 __dtol3、__dtoui3 和其他整数类型转换函数的调用?

c++ - 函数模板的多个实例与参数列表匹配

python - 如何使用 MSVC-14.0 为 x64 构建 boost 1_59_0