繁体   English   中英

C ++,我想知道如何分配内存向量 <int, int> &gt; *

[英]C++, I want to know how to allocate memory vector< pair<int, int> > *

我有一个错误_Has_unused_capacity()矢量...我不知道如何分配动态内存

我尝试push_back,但是发生了错误

vector< pair<int, int> > * v;

void Some_Function(){
   int m=3;
   int idx1=1;
   int idx2=2;
   int idx3=3;

   for(int i = 0; i<m; i++) {
       v[idx1].push_back(make_pair(idx2, idx3));      
       v[idx2].push_back(make_pair(idx1, idx3));
   }
}

你有一个指向任何地方的向量的虚弱点。 为您的向量分配内存(虽然不建议这样做)或不使用指针。

vector< pair<int, int> > * v = new vector<pair<int, int>>[2];
V[idx].push_back(make_pair(idx2, idx3));

完成操作后,不要忘记删除向量。

delete [] v;

更好的方法是使用智能指针,这是shared_ptr的示例:

#include <iostream>

#include <vector>
#include <memory>

using namespace std;
using vecPair = vector<pair<int, int>>;

// deallocator for an array of vectors
void deleter(vecPair* x)
{
    delete[] x;
}

int main() {
    shared_ptr<vecPair> v;
    v.reset(new vecPair[2], deleter);
    int a = 1;
    int b = 2;
    int c = 3;
    int d = 4;
    v.get()[0].push_back(make_pair(a, b));
    v.get()[1].push_back(make_pair(c, d));
}

首先,我不建议您使用指向容器的指针。

同样,该元素是指针可能会导致内存泄漏。

但是,如果必须的话。 您可以使用std::vector<std::vector<std::pair<int, int>>

或, auto vec = std::make_shared<std::vector<std::vector<std::pair<int, int>>>()

使用智能指针可以自己管理内存。 从C ++ 14开始就一直支持std::make_shared

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM