boost :: split vs boost :: iter_split之间的区别

vkr*_*rzv 5 c++ boost

boost::splitboost::iter_split功能有什么区别?

Yuu*_*shi 8

boost::split将拆分字符串复制到SequenceSequenceT(例如,a std::vector<std::string>)中.boost::iter_split地方iterators(特别是迭代器范围)进入SequenceSequenceT.

这实际上意味着两件事:

  1. 使用split将创建副本,因此原始字符串将不会看到对返回的字符串容器的任何更改.此外,您不必担心迭代器失效.

  2. 使用iter_split将返回迭代器范围的容器,因此,修改这些迭代器指向的内容也将修改原始字符串.其次,如果在运行后修改了原始字符串,则iter_split可能会遇到迭代器失效问题.但是,不会对基础字符串执行任何副本,因此这可能会运行得更快并且使用更少的内存.

  • 考虑到https://github.com/boostorg/algorithm/blob/develop/include/boost/algorithm/string/split.hpp#L146(除了调用`iter_split之外``split`什么都不做,这似乎不对. `). (2认同)