【发布时间】:2013-02-20 09:47:47
【问题描述】:
第一个问题:是否可以使用自动“强制”const_iterator?
例如:
map<int> usa;
//...init usa
auto city_it = usa.find("New York");
我只想查询,而不是更改 city_it 所指向的任何内容,所以我希望将 city_it 设置为 map<int>::const_iterator。但是通过使用auto,city_it 与map::find() 的返回类型相同,即map<int>::iterator。有什么建议吗?
【问题讨论】:
-
您想要一个特定类型的变量而不指定类型?抱歉,在这种情况下不能轻易完成。
-
可能是
static_cast<map<int> const &>(usa).find("New York")? -
map<int>是一个错误(如果您的意思是std::map)。您必须至少指定两个模板参数;键类型和值类型。 -
尽管
const auto根据您的需要可能没问题,但应该可以将auto city_it = usa.cfind("New York")与cbegin()、cend()等保持一致......但它可能被遗忘了.您的问题有望成为一个提醒,有一天我们会收到std::cfind。