使用字符数组作为 Map 中的键
using character array as a key in map
我正在尝试使用char[]
作为map
的键:
#include<iostream>
#include<map>
#include<string>
#include<utility>
#include<list>
using namespace std;
int main(void)
{
map<char[10],int> m;
char c[10]={'1','2','3','4','5','6','7','8','9','0'};
m[c]=78;
return 0;
}
但是抛出一个错误:
错误:数组用作初始值设定项
second(std::forward<_Args2>(std::get<_Indexes2>(__tuple2((...(
即使这样也行不通:m["abcdefghi"]=4;
如何使用char []
作为密钥?我有几个关于SO的问题,但它们没有多大帮助。
注意:我用过string
但我想尝试char[]
只是出于好奇
数组既没有复制构造函数,也没有复制赋值运算符。数组没有默认的运算符<。
使用标准容器std::array
代替数组。
例如
#include<iostream>
#include <array>
#include<map>
int main()
{
std::map< std::array<char, 10>, int> m;
std::array<char, 10> c = {'1','2','3','4','5','6','7','8','9','0'};
m[c]=78;
return 0;
}
使用std::array
:
#include <array>
#include <iostream>
#include <map>
int
main()
{
using key_type = std::array<char, 10>;
std::map<key_type, int> m;
key_type c{ '1', '2', '3', '4', '5', '6', '7', '8', '9', '0' };
m[c] = 78;
}
如果需要可变大小,请使用std::string_view
:
#include <iostream>
#include <map>
#include <string_view>
int
main()
{
std::map<std::string_view, int> m;
char c[10] = { '1', '2', '3', '4', '5', '6', '7', '8', '9', '0' };
m[{c, sizeof(c)}] = 78;
}
相关文章:
- C++字符*缓冲区的大小
- HEX值到wchar_t字符(UTF-8)的转换
- 如何导出包含具有"std::unique_ptr"值的"std::map"属性的
- std::map<struct,struct>::find 找不到匹配项,但是如果我循环通过 begin() 到 end(),我在那里看到匹配项
- 为什么 Serial.println(<char[]>);返回随机字符?
- 我的字符计数代码计算错误.为什么
- 字符串-C++后显示的随机字符
- 将Integer转换为4字节的unsined字符矢量(按大端字节顺序)
- 使用一个考虑到std::map中键值的滚动或换行的键
- 如何在C++中从字符串中分割字符
- 为什么msgrcv()将垃圾字符馈送到缓冲区
- 指向指向字符数组的指针数组的指针
- 如何用转义符替换字符串中的所有特殊字符
- 为什么 sscanf 无法从一个字符串中读取uint64_t和字符?
- 使用字符数组作为 Map 中的键
- 将字符指针按顺序存储在 map 中 std::map<char*, int> mymap。将其存储为字符或字符串不是一个选项
- 如何解决类型'std::map<音频类型,常量字符*>"的"没有可行的重载运算符[]?
- map<string1, map<string2, map<string3, string> > > 是否比将字符串连接到 map<string1string
- 将字符向量解析为 std::map<string, string>
- 如何将 2 个字符* 数组直接映射到 std::map<std::string,std::string>