c++ - 如何初始化字节数组的映射?
问题描述
如何初始化一个键是字符串、值是数据对(字节数组)和大小的映射?
#include <cstddef>
#include <map>
#include <string>
#include <utility>
std::map<std::string, std::pair<char*, size_t>> my_map = {
{"key1", {{0xE2, 0x82, 0xAC}, 3}}
};
上面的代码无法编译。
解决方案
您的代码假设您将 char 指针存储在std::pair
. Char 指针与 char 数组不同,尽管 char 数组隐式转换为char*
.
如果你真的想存储char*
,你可以在堆上分配内存并将分配内存的指针分配给你的对。然后,当然,您必须释放内存。或者您可以分配一个分配在堆栈上的数组的指针,但是您必须确保分配在堆栈上的数组在映射的生命周期内是有效的。
正如评论中建议的那样,您可以使用std::vector<char>
而不是std::pair<char*, std::size_t>
. 然后你甚至可以省略字节的显式大小:
std::map<std::string, std::vector<char>> my_map = {
{"key1", {0xE2, 0x82, 0xAC}}
};
推荐阅读
- javascript - 获取keyup后输入的值
- connection - 在 omnet++ 中,根据它们的欧几里德距离重复连接节点
- dart - 颤振输入意外结束(在字符1处)
- javascript - 闭环内循环 - FocusEvent 的问题
- reactjs - 由于在渲染方法中调用了 onClick 方法,出现“无法在现有状态转换期间更新”错误
- android - 如何使用 NavController.navigate 替换片段而不是将其添加到顶部
- java - 扫描值的简化方法?
- ios - PHAssetResourceManager 的 requestData 返回多个对象
- benchmarkdotnet - Benchmarkdotnet 不尊重框架目标 net462
- java - FirebaseRecyclerAdapter 抛出一个空对象