C++ C++;,带向量<;int[2]>;我可以向后推吗({someNum1,someNum2})?
我有向量:C++ C++;,带向量<;int[2]>;我可以向后推吗({someNum1,someNum2})?,c++,vector,push-back,C++,Vector,Push Back,我有向量: vector<int[2]> storeInventory; //storeInventory[INDEX#]{ITEMNUM, QUANTITY} 然而,当我尝试使用上面的语法时,我得到了错误error:excoped一个表达式。我所尝试的是不可能的,还是我只是走错了路 storeInventory.push_back({GRAPE, 24}); storeInventory.push_back({ORANGE, 30}); 你可以试试这个。我想你忘了括号。我不相
vector<int[2]> storeInventory; //storeInventory[INDEX#]{ITEMNUM, QUANTITY}
然而,当我尝试使用上面的语法时,我得到了错误error:excoped一个表达式。我所尝试的是不可能的,还是我只是走错了路
storeInventory.push_back({GRAPE, 24});
storeInventory.push_back({ORANGE, 30});
你可以试试这个。我想你忘了括号。我不相信这样传递数组是可能的。考虑使用<代码> STD::数组< /代码>代替:
vector<std::array<int, 2> > storeInventory;
storeInventory.push_back({{GRAPE,24}});
矢量仓库库存;
商店存货。推回({{葡萄,24});
内置数组不可分配或复制。这违反了容器元素要求(至少对于C++03和更早版本)。换句话说,不能有int[2]
元素的std::vector
。必须包装数组类型以满足上述要求
正如已经提出的,std::array
是C++11中包装器类型的完美候选。或者你也可以这样做
struct Int2 {
int a[2];
};
并且使用std::vector
C样式数组不可复制,因此不能用作std::vector
中的元素类型,如果它是int[2]的唯一向量,则可以使用:
std::vector<std::pair<int, int>> vec
只需使用std::vector
:)使用std::pair而不是数组,或者使用std::map技术上,我认为vector storeInventory代码>在具有新的细粒度容器需求的C++11中有效。值类型只需要是可破坏的,数组类型是可破坏的push_back
要求值类型为copy insertable,而数组类型不是。数组类型的容器不是很有用(或有用),建议使用包装器结构(如std::array
),这就是为什么我要问这个问题。如果这个答案能更努力地向提问者解释为什么这个解决方案会起作用,以及他们应该如何应用它,那么这个答案可能会更好。
std::vector<std::pair<int, int>> vec
int a, b;
vec.push_back(std::make_pair(a, b));