push_back
非const元素向量按预期工作:
std::vector<int> foo;
int bar = 0;
foo.push_back(bar);
但为什么以下情况不可能?
std::vector<const int> foo;
const int bar = 0;
foo.push_back(bar);
更确切地说,为什么要创建foo
对象但不能在其上调用push_back
?
答案 0 :(得分:8)
根据this answer(其中一位C ++ 11设计师的评论),标准不允许std::vector<const T>
。
答案表明,有可能提供一个自定义分配器,它允许带有该分配器的向量来保存const对象。
你最好不要试图这样做。