我正在尝试声明以下两个函数以将标记化字符串重新组合在一起(分解为 vector 或其他与迭代器兼容的数据结构):
std::string ComposeTokens(std::vector<std::string> Tokens);
std::string ComposeTokens(std::iterator first, std::iterator last);
在实现文件中(这里没有提供——这是相当明显的),Visual Studio 的 IntelliSense 没有将任何一个实现识别为有效,说这两个都与两个声明冲突。编译会产生一条消息,指出迭代器必须有一个模板。
这里有什么方法可以做我想做的事吗?声明 iterator
最佳答案
std::iterator 是一个基类模板,它至少需要定义一个类别和一个类类型。
您通常不会以这种方式定义迭代器 - 您可以使用模板来定义它:
template <typename Iterator>
std::string ComposeTokens(Iterator first, Iterator last);
此外,您可能希望通过引用传递 vector :
std::string ComposeTokens(std::vector<std::string>& Tokens);
关于c++ - 改变参数值和数量——这是合法的 C++ 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11444793/