小编bsc*_*ng5的帖子

如何为向量的向量保留内存

假使,假设

vector<vector<shared_ptr<Base>>> vec
vec.reserve(100)
vec[0].reserve(20)  // Error : vector subscript out of range
Run Code Online (Sandbox Code Playgroud)

我试图为外部向量和内部向量保留内存。我知道它vec是空的,所以我无法为内部向量保留内存。我只能resize()shrink_to_fit()之后。然而,使用resize()orshrink_to_fit()是没有用的,因为这不是我想要做的。

为内部向量保留内存的目的是尝试很好地分配内存,以便以后更快地搜索内部元素。我只是想知道如果我不保留内存,预先分配的内存既昂贵又混乱。

我想问一下 :

  1. 有没有办法为内部向量保留内存
  2. 我的“在没有为向量保留内存的情况下会导致内存分配错误”的概念是否正确?

抱歉我的英语不好,我正在使用 VC++ 2010。

c++

2
推荐指数
1
解决办法
3375
查看次数

这些实现会导致内存泄漏吗?

以下几种情况会导致内存泄漏吗?如果是,我该如何解决问题?我应该在Base类(即Structure* var)中使用指针并在析构函数中删除它吗?

如果情况 2 不会导致内存泄漏,会发生什么Structure(0,0)?它是立即创建并被销毁还是会发生其他事情?

情况1 :

struct Structure
{
    int a;
    int b;
    Structure() { a=1; b=2; }
    Structure(int num1, int num2) : a(num1), b(num2){}
};

class Base
{
    private:
        Structure var;
    public: 
        Base(Structure structure)
        {
            var = structure;
        }
};

class Derived : public Base
{
    public:
        Derived(bool boolean) : Base(boolean ? *(new Structure(0,0)) : *(new Structure(10,10))){}
};

int main()
{
    Derived derived(true);
}
Run Code Online (Sandbox Code Playgroud)

案例2:

struct Structure
{
    int a;
    int b; …
Run Code Online (Sandbox Code Playgroud)

c++

-23
推荐指数
1
解决办法
388
查看次数

标签 统计

c++ ×2