我有一个奇怪的问题。我的修复进入了一些高性能库。我的任务之一是更改接口以使用内部字符串描述符格式,该格式是指针和长度而不是参数的std字符串。但是,其中一个函数在此字符串中搜索并查找模式,并将此模式后的其余字符串复制到缓冲区中。
我添加了将整个迭代器范围分配到缓冲区{std string的自定义分配器版本},然后删除所有字符到模式的更改。修复被拒绝说我可以做得更好。
我目前的问题是这个。我的输入字符串本质上是一对迭代器。我可能拥有或不拥有结束迭代器指向的字节,即我不能安全地取消引用它。
模式
std::find(start, end, value);
不允许将值作为字符串。
strstr(start, value);
采用以null结尾的字符串。我的代码有提升的联系。是否有任何boost实用程序或stl算法采用2个字符串迭代器并返回指向字符串模式的第一个字节的迭代器。当然。有一个脑死亡的解决方案,创建一个临时字符串,然后重新分配。
我可以避免分配吗?
答案 0 :(得分:0)
std::search(begin, end, pat_begin, pat_end);
为我做的工作。如果可能,请提供更多建议。