可以将原始指针传递给期望迭代器的模板函数吗?我是否认为迭代器只是一个覆盖与指针相关的运算符(例如*,++等)的类,或者迭代器是否暴露了指针不具有的任何其他接口?换句话说,指针“看起来像”迭代器吗?
示例:
我想使用boost::algorithm::knuth_morris_pratt_search
(documentation here)。
我的语料库(要搜索的字符串)和模式(正在查找的字符串)只是内存中的字节 - 我有一个包含起始地址和字节长度的指针。为了论证,让我们说它是一个c风格的字符串。
根据文档,knuth_morris_pratt_search
函数要求我传入语料库和模式的开始和结束迭代器。
我希望使用的功能:
template <typename patIter, typename corpusIter>
corpusIter knuth_morris_pratt_search (
corpusIter corpus_first, corpusIter corpus_last,
patIter pat_first, patIter pat_last );
我可以这样做吗?
// Assume these are initialized:
char* c;
int cLength;
char* p;
int pLength;
char* result = knuth_morris_pratt_search<char*, char*>
(c, c + cLength, p, p + pLength);