我试图将迭代器从模板函数返回到向量(还不是模板类成员——我还在写那个)。编译器不断给我错误(复制如下以方便谷歌搜索)。我基本上知道问题出在哪里,但确切的语法是难以捉摸的。
我阅读了互联网,搜索了 SO,包括我必须在哪里以及为什么要放置“模板”和“类型名”关键字?,但没有找到有效的答案。我想我应该在这里提出问题并自己回答。
(略)原代码如下:
#include <vector>
#include <algorithm> // std::lower_bound
template<typename T> std::vector<T>::iterator
insertIntoVector(std::vector<T>& vec, const T& val)
{ itr = [some std::vector<T> iterator];
return itr; // return iterator to val in vec.
} // End of insertIntoVector();
编译器错误:
error C2145: syntax error: missing ';' before identifier 'insertIntoVector'
error C2065: 'T' : undeclared identifier
error C2923: 'std::vector' : 'T' is not a valid template type argument for parameter '_Ty'
变得明智,我尝试了这个:
template<typename T> typename std::vector<T>::iterator
insertIntoVector(std::vector<T>& vec, const T& val)
更多编译器错误:
error C1075: end of file found before the left brace '{'
如果这个问题被解锁,我会在下面发布我的答案。否则,请参阅我在何处以及为什么必须放置“模板”和“类型名称”关键字的答案?.