Vector 如何访问向量中的变量<;结构>*obj?

Vector 如何访问向量中的变量<;结构>*obj?,vector,Vector,如何从向量中提取变量 我不能使用二进制插入运算符或相等运算符 前面,我声明了一个vector*vObj并分配了它,然后返回vObj 并在此函数中调用它: vector<sameStruct> firstFunc(); for (unsigned int x = 0; x < v->size(); x++) { v[x]; } vector firstFunc(); 对于(无符号整数x=0;xsize();x++) { v[x]; } 当我调试它时,v[x]现在

如何从向量中提取变量

我不能使用二进制插入运算符或相等运算符

前面,我声明了一个
vector*vObj
并分配了它,然后返回
vObj
并在此函数中调用它:

vector<sameStruct> firstFunc();

for (unsigned int x = 0; x < v->size(); x++)
{
   v[x];
}
vector firstFunc();
对于(无符号整数x=0;xsize();x++)
{
v[x];
}
当我调试它时,
v[x]
现在拥有原始向量的全部内容,就像它以前没有下标/索引一样

但我认为我没有做任何事情来取得更大的进步


我的向量中只有大约4个变量;当我调试它时,它具有我需要的信息,但我无法获取它。

要使用[]运算符访问元素,必须在对象上执行此操作,而不是在指向对象的指针上

尝试

例如

具有完全相同的效果-它们从指针开始返回第n个对象。(注意第二个示例中*的位置,在应用偏移后称为

另外两个提示

通过将向量作为引用而不是指针传递,也可以避免像这样取消引用。这并不总是一个合适的选项,但它确实会导致更干净的代码

void my_func(std::vector<int>& vector)
{
  // vector can then be used as a regular variable
}
void my_func(标准::向量和向量)
{
//然后,向量可以用作正则变量
}
如果要将特定类型的向量大量传递给函数,那么可以使用typedef,以保持清晰性并节省键入时间

typedef std::vector<int> IntVector;

void my_func(IntVector& vector)
{
}
typedef std::vector IntVector;
void my_func(IntVector和vector)
{
}

正如所写,v是指向结构向量的指针

当你直接索引到v时,你所做的就是指针算术。v[x]是x位置的结构向量(假设v是数组,如果它只是指针末端的一个对象,那么x>0的v[x]就是垃圾)。这是因为它不是将[x]应用到v指向的向量,而是应用到指针v本身

您需要取消对指针的引用,然后使用以下内容将其索引到向量中:

(*v)[x];
v->at(x);
v->at(x).variable;
v->at(x).memberfunction;
此时,在向量的第X个位置有一个对对象的引用,以获取其成员函数/变量使用:

(*v)[x].variable;

如果不想取消对向量的引用,则可以访问其中的元素,可以尝试以下操作:

(*v)[x];
v->at(x);
v->at(x).variable;
v->at(x).memberfunction;
这样,您访问对象的成员函数的方式与调用时完全相同:

v->size();
我希望这会有所帮助

v->at(x);
v->at(x).variable;
v->at(x).memberfunction;
v->size();