std::back_inserter函数用法
Posted Linux C/C++程序员
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了std::back_inserter函数用法相关的知识,希望对你有一定的参考价值。
back_inserter函数:配合copy函数,把[a, b)区间的数据插入到string对象的末尾,如果容量不够,动态扩容。
使用案例:
1、客户端与服务器通信场景:服务器向客户端发送数据,客户端接收数据。
接收数据的三种方法:
(1)错误方法:把接收到的c风格字符串用string构造函数转成string对象,再利用string的重载加运算符函数拼接到变量末尾。数据很有可能是不以\'\\0\'结尾,这样的话将出现严重bug。
(2)低效率方法:一个字符一个字符的追加。
(3)正确高效方法:运用copy和back_inserter函数。
1 ssize_t Curl::callback(char *ptr, size_t m, size_t n, void *arg) { 2 Curl *This = (Curl *)arg; 3 int count = m * n; 4 5 //拷贝ptr中的数据到responseData,注意:服务器发来的数据不一定以\'\\0\'结束,不能用sprintf去拷贝数据 6 copy(ptr, ptr + count, back_inserter(This->m_responseData)); 7 return count; 8 }
以上是关于std::back_inserter函数用法的主要内容,如果未能解决你的问题,请参考以下文章
与 std::inserter 相比,std::back_inserter 有啥好处?
使用 `std::copy()` 和 `std::back_inserter()`
为啥在 std::copy 期间使用 std::back_inserter 而不是 end()?
将并行执行策略与 std::back_inserter 一起使用是不是安全?