Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/125.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;,带向量<;int[2]>;我可以向后推吗({someNum1,someNum2})?_C++_Vector_Push Back - Fatal编程技术网

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