C++ 结构的访问向量

C++ 结构的访问向量,c++,arrays,vector,struct,C++,Arrays,Vector,Struct,我有一个结构: struct OutputStore { int myINT; string mySTRING; } 如果我创建OutputStore类型的数组,如下所示: OutputStore *OutputFileData = new OutputStore[100]; 然后我可以用以下方法来解决这个问题: OutputFileData[5].myINT = 27; 但如果我使用向量而不是数组: vector<OutputStore> *OutputFi

我有一个结构:

struct OutputStore 
{
    int myINT;
    string mySTRING;
}
如果我创建OutputStore类型的数组,如下所示:

OutputStore *OutputFileData = new OutputStore[100];
然后我可以用以下方法来解决这个问题:

OutputFileData[5].myINT = 27;
但如果我使用向量而不是数组:

vector<OutputStore> *OutputFileData = new vector<OutputStore>(100);
既然可以通过向量的索引访问向量,就像访问数组一样,为什么这行行不通呢。 我只是想知道,因为这表明我缺少一些基本的理解


(我改成了一个向量,因为我不知道我的数据将达到的大小,所以我想把它推回。我使用了一个结构的构造函数,并通过它推回…我只想了解这里发生了什么)

因为当你在指针上应用[]操作符时,它将索引到该指针中,不是那个东西。要访问对象,首先需要取消对向量指针的引用

(*OutputFileData)[5].myINT = 27;
//*OutputFileData is the same as OutputFileData[0]
如果要直接在向量上使用[]运算符,请不要将其声明为指针

vector<OutputStore> OutputFileData(100);
OutputFileData[5].myINT = 27;
矢量输出文件数据(100);
OutputFileData[5].myINT=27;

向量只是C++中的任何一个类。如果创建指向该对象的指针,则在取消引用该对象之前,不会直接使用该对象

不要创建指向向量的指针。照办

vector<OutputStore> OutputFileData(100);

非常感谢,我现在明白了。
vector<OutputStore> OutputFileData(100);
(*OutputFileData)[5].myINT = 27;