c++ - 使用字符数组作为映射中的键
问题描述
我正在尝试用作char[]
a 的密钥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;
}
但是抛出一个错误:
错误:数组用作初始化器
第二(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;
}
推荐阅读
- javascript - 我可以从我的 nuxt.js 项目中获得 - 我所有潜在路线的列表吗?
- java - SpringBoot应用程序远程调试异常
- c - C++中的Socket程序在服务器和客户端之间来回发送消息
- angular - 第二次调用观察者下一个似乎不起作用
- selenium - 在 Selenium 中,我如何在这个标签 Mahesh Wagh 中获取文本“Mahesh Wagh”
- spring-boot - [Jxls]为什么找不到SetFunction方法?
- java - Intellij 找不到运行 Springboot 应用程序的 Jar
- excel - Workbook_SheetChange 事件在不应触发时触发两次
- angular - Angular 6 中的手动导航
- blazor - 找不到错误解决方法 Httpclient 服务未注册