5

我有向量:

vector<int[2]> storeInventory; //storeInventory[INDEX#]{ITEMNUM, QUANTITY}

我想使用该push_back()方法将新数组添加到库存向量中。与此类似的东西:

const int ORANGE = 100001;
const int GRAPE = 100002

storeInventory.push_back({GRAPE,24});
storeInventory.push_back{ORANGE, 30};

但是,当我尝试使用上面的语法时,我得到了错误Error: excpeted an expression。我正在尝试的事情是不可能的,还是我只是以错误的方式去做?

4

6 回答 6

6

内置数组不是AssignableCopyConstructible。这违反了容器元素要求(至少对于 C++03 和更早版本)。换句话说,你不能拥有std::vectorofint[2]元素。您必须包装您的数组类型以满足上述要求。

正如已经建议的那样,它std::array是 C++11 中包装器类型的完美候选者。或者你可以做

struct Int2 {
  int a[2];
};

并使用std::vector<Int2>.

于 2012-11-30T19:32:08.243 回答
3

我不相信有可能传递这样的数组。考虑std::array改用:

vector<std::array<int, 2> > storeInventory; 
storeInventory.push_back({{GRAPE,24}});
于 2012-11-30T19:30:48.093 回答
3

如果它只是 int[2] 的向量,您可以使用:

std::vector<std::pair<int, int>> vec

添加元素:

int a, b;
vec.push_back(std::make_pair(a, b));
于 2012-11-30T21:07:51.203 回答
2
storeInventory.push_back({GRAPE, 24});
storeInventory.push_back({ORANGE, 30}); 

你可以试试这个。我想你忘记了括号。

于 2012-11-30T19:25:19.250 回答
2

C 样式的数组不可复制,因此不能用作 a 中的元素类型std::vector

于 2012-11-30T19:32:53.080 回答
0

只需使用std::vector<int *>:)

于 2015-05-22T19:17:59.787 回答