1
假设我有以下功能:声明取决于迭代的容器const或非const
template <typename Iterator>
void f()
{
std::list<int> numList;
Iterator it = numList.begin();
...
}
Iterator
可以是std::list<int>::iterator
或std::list<int>::const_iterator
。
上述函数编译为std::list<int>::iterator
,但std::list<int>::const_iterator
该列表应声明为const std::list<int>
。
是否有申报清单要么std::list<int>
或const std::list<int>
取决于Iterator
是iterator
或const_iterator
类型的方法吗?
为什么要将它声明为'const std :: list'?这是你的要求吗?因为你可以从一个非const列表中获得一个'const_iterator'。 –
Jack
好的。但是它们是通过不同的函数获得的:'begin()'和'cbegin()'。如何从非const列表中获取'iterator'或'const_iterator'? – Hrant
'const_iterator'应该可以转换为'iterator',所以只需使用'cbegin'。 –