c++ - boost::split 与 boost::iter_split 之间的区别

标签 c++ boost

boost::splitboost::iter_split 函数有什么区别?

最佳答案

boost::split将拆分后的字符串复制到 SequenceSequenceT (例如 std::vector<std::string> )。 boost::iter_split地点 iterators (特别是迭代器范围)到 SequenceSequenceT .

这实际上意味着两件事:

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

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

关于c++ - boost::split 与 boost::iter_split 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20781090/

相关文章:

c++ - 找出仿函数 C++11\Boost 的返回类型

c++ - 运行 boost bcp 工具时出错 : "The Boost path appears to have been incorrectly set"

c++ - 如何按标题自动对方法进行排序?

c++ - 在编译时识别所有调用 function1<T> 的所有 T 然后添加行 function2<T>()

c++ - Soundflower 输入应用程序

c++ - 为什么 std::async 不能与接收抽象类引用作为参数的函数一起使用?

boost - 与 qi::repeat 和可选解析器不匹配

c++ - 有没有办法使用 boost::program_options::parse_config_file 在 INI 文件中包含多个 "name=value"行?

c++ - 将LibSVM输出转换为浮点 vector

c++ - boost::variant 和 moveconstructible