为什么我不能将push_back推送到const元素的向量?

时间:2015-03-01 06:19:24

标签: c++ vector const

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

1 个答案:

答案 0 :(得分:8)

根据this answer(其中一位C ++ 11设计师的评论),标准不允许std::vector<const T>

答案表明,有可能提供一个自定义分配器,它允许带有该分配器的向量来保存const对象。

你最好不要试图这样做。