【发布时间】:2019-02-15 08:33:04
【问题描述】:
我正在尝试将std::map<enum, int> 存储在boost::beast::multi_buffer 中。到目前为止,我一直在使用 boost::asio::buffer_copy 和 boost::asio::buffer 来存储向量和 POD。但是,我找不到存储 STL 映射的方法。
我试过了:
auto t_map = std::map<CODES, int>(); // CODES is an enum type
auto t_map_size = t_map.size() * sizeof(std::pair<CODES, int>);
auto tmp_buffer = boost::asio::buffer(t_map, t_map_size); // this is not supported
auto size = boost::asio::buffer_copy(t_map_size , tmp_buffer);
boost::beast::multi_buffer buffer;
buffer.commit(size);
- 有没有办法将
std::map<enum, int>存储在ConstBufferSequence中? (因为boost::asio::buffer_copy需要一个) - 如果没有,是否有任何解决方法可以将
std::map<enum, int>存储在boost::beast::multi_buffer中?
谢谢!
【问题讨论】:
-
您永远不能在 Asio 缓冲区(或序列)中“存储”任何内容,因为缓冲区仅 reference 现有数据。任何缓冲区都指的是 POD 数据的连续区域,并且缓冲区序列结合了其中的几个(以支持“收集”在内存中不一定连续的缓冲区)
标签: c++ boost boost-asio boost-beast beast-websockets