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();