【发布时间】:2012-06-15 03:44:37
【问题描述】:
我的代码有问题吗?
std::vector<int[2]> weights;
int weight[2] = {1,2};
weights.push_back(weight);
无法编译,请帮忙解释一下原因:
no matching function for call to ‘std::vector<int [2], std::allocator<int [2]> >::push_back(int*&)’
【问题讨论】:
-
这适用于
std::arrays、std::vectors 或std::pairs 的向量。您的数组在传入时会衰减为指针,这会导致问题。 -
谢谢,克里斯。我明白了。
-
我认为有一个很好的答案等待提出它为什么不起作用的所有细节,我会发现这是一本有趣且有启发性的读物。它不仅仅是腐烂,但我不确定那里有什么。
-
这可以使用移动语义在 C++11 中工作吗?还是这也注定了?
-
@templatetypedef,即使解决了推入,也存在复制之类的其他问题。不过,我不完全确定它是否适用于推送。