C++ 为什么我能';t使用->;当我声明对象数组时的运算符?

C++ 为什么我能';t使用->;当我声明对象数组时的运算符?,c++,pointers,C++,Pointers,风景01: vector<int> *v = new vector<int>(); v->push_back(10); vector<int> *arr = new vector<int>[5]; arr[0]->push_back(10); vector*v=newvector(); v->推回(10); 它很好用 布景02: vector<int> *v = new vector<int>(); v-&

风景01:

vector<int> *v = new vector<int>();
v->push_back(10);
vector<int> *arr = new vector<int>[5];
arr[0]->push_back(10);
vector*v=newvector();
v->推回(10);
它很好用

布景02:

vector<int> *v = new vector<int>();
v->push_back(10);
vector<int> *arr = new vector<int>[5];
arr[0]->push_back(10);
vector*arr=新向量[5];
arr[0]->推回(10);

它不起作用。为什么?

v
是指向
std::vector
对象的指针。因此,向量的
push_back()
功能不能使用
符号直接使用,但可以使用
->
符号以及其他方式直接访问


arr
是指向
std::vector
对象数组的指针。通过调用
arr[0]
可以获取该数组的第一个元素,它是
std::vector
对象,而不是指针。标准的
符号在这里应该可以正常工作。

v
是指向
std::vector
对象的指针。因此,向量的
push_back()
功能不能使用
符号直接使用,但可以使用
->
符号以及其他方式直接访问


arr
是指向
std::vector
对象数组的指针。通过调用
arr[0]
可以获取该数组的第一个元素,它是
std::vector
对象,而不是指针。标准的
符号在这里应该可以正常工作。

->
的左操作数必须是指针
arr[0]
不是指针,而是
std::vector
。您需要使用
而不是
->
->
的左操作数必须是指针
arr[0]
不是指针,而是
std::vector
。您需要使用
而不是
->
。因此,向量的
push_back()
函数只能通过使用
->
而不是
符号来使用。。不完全是。您还可以编写,
(*v).push_back(10)
。因此,向量的
push_back()
函数只能通过使用
->
而不是
符号来使用。。不完全是。你也可以写,
(*v)。向后推(10)