我有以下代码Xcode
表示它无法识别std::advance
的签名:
template<typename Container> const typename Container::value_type&
getNthElement(const Container& container, size_t n) {
auto nElem = advance(container.begin(), n);
return *nElem;
}
编译器不支持C++14
,因此我无法使用cbegin(container)
。为什么这个解决方案错了?
答案 0 :(得分:6)
std::advance
不会返回任何内容(请参阅此处:http://www.cplusplus.com/reference/iterator/advance/,其返回类型为void
),因此auto nElem = advance(container.begin(), n);
无效。
如评论中所述,您可以使用下一个。 :)