C++ 将属性插入向量中的最后一个元素
对不起!这个代码实际上工作正常;我看到了错误的错误。感谢大家的投入 <>我希望能够直接访问C++中向量的最后一个元素。目前,我将_向后推一个自定义类型的临时变量,但是我更愿意将数据直接放入向量中。下面的代码是我想做的一个示例。它不会编译,但它比我解释得更好:C++ 将属性插入向量中的最后一个元素,c++,vector,C++,Vector,对不起!这个代码实际上工作正常;我看到了错误的错误。感谢大家的投入 我希望能够直接访问C++中向量的最后一个元素。目前,我将_向后推一个自定义类型的临时变量,但是我更愿意将数据直接放入向量中。下面的代码是我想做的一个示例。它不会编译,但它比我解释得更好: typedef struct { float colour[3]; } CustomType vector<CustomType> customArray; customArray.push_back(CustomTyp
typedef struct
{
float colour[3];
}
CustomType
vector<CustomType> customArray;
customArray.push_back(CustomType());
// The hard part - won't work
customArray.back().colour[0] = 1;
最后一行我需要一些帮助;将数据放入向量中最近推回的元素的正确语法是什么?customArray.size-1是添加到向量的最后一项的索引
customArray[customArray.size-1]。颜色[0]=1应该可以工作
[正如Oli和interjay等人所评论的,如果您纠正语法错误,back方法将起作用]您的意思是这样的:
// Construct vector with `NUM_ELEMENTS` entries
vector<CustomType> customArray(NUM_ELEMENTS);
// Now you can access them directly
customArray[0].colour[0] = 1;
back返回对向量最后一项的引用,除了一个小的语法错误外,您的代码是正确的。为什么不
customArray.back().colour[0] = 1;
工作
它确实有用!再试一次:一旦我修复了小语法错误-missing;,代码就会为我编译;。我对你的问题不是很确定,但这是否适用于u customArray[customArray.size-1]。颜色[0]=1;你说它不起作用是什么意思?如前所述,代码运行良好,因为customArray.back返回对最后一个元素的引用,而不是副本。@Oli:我也这样做。结果是我没有正确读取错误;这是一段不同的代码。出于兴趣,可以使用。回到这里,对吗?如果你回答了自己的问题,你可能应该关闭/删除它…正是这样,但我想得到数组的最后一个元素,它的长度是动态的@琼斯卡的想法是对的。@Jam:好吧,那为什么不直接用back呢?少打字了!back已经被建议了很多,我以前确实正确地使用过它——由于另一个错误,我的代码没有编译,这让我感到困惑。在其他新闻中,更少的打字。。。我被出卖了!back应该也能用,而且更具可读性。在意识到我是个白痴之后,是的,back更适合使用。无论如何,谢谢你,@jonsca。