访问结构的矢量(Accessing vectors of structs)

2019-09-20 05:03发布

我有一个结构:

struct OutputStore 
{
    int myINT;
    string mySTRING;
}

如果我创建类型OutputStore的阵列如下:

OutputStore *OutputFileData = new OutputStore[100];

然后我可以解决这个问题:

OutputFileData[5].myINT = 27;

但是,如果我用一个矢量,而不是一个数组:

vector<OutputStore> *OutputFileData = new vector<OutputStore>(100);

然后,我得到一个” ......是不是成员‘的std ::矢量<_Ty>’的错误,如果我尝试:

OutputFileData[5].myINT = 27;

既然你可以通过它的索引来访问一个载体,就像你可以在一个阵列,为什么这行不行。 我只是想知道,因为它意味着我失踪的了解一些基本的一点。

(我改,因为我想的push_back,因为我不知道我的数据将达到大小的矢量。我知道了,通过使用一个构造结构,并通过该推回去工作......我只是想明白是怎么回事)

Answer 1:

不要创建一个指向向量。 做就是了

vector<OutputStore> OutputFileData(100);

你会没事的。 为了使你的代码上面的工作,你需要做到以下几点

(*OutputFileData)[5].myINT = 27;


Answer 2:

因为当你应用[]操作上的指针,它会索引到该指针,而不是对象。 为了得到你首先需要取消引用您的载体指针的对象。

(*OutputFileData)[5].myINT = 27;
//*OutputFileData is the same as OutputFileData[0]

如果您想直接对矢量使用[]运营商不声明为指针。

vector<OutputStore> OutputFileData(100);
OutputFileData[5].myINT = 27;

一种载体,就像任何其它在C ++的类。 如果您创建一个指向它,你不直接与对象,直到取消引用它的工作。



文章来源: Accessing vectors of structs