首页 > 解决方案 > 使用字符数组作为映射中的键

问题描述

我正在尝试用作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[]只是出于好奇

标签: c++arraysdictionarystl

解决方案


数组既没有复制构造函数,也没有复制赋值运算符。并且没有用于数组的默认运算符 <。

使用标准容器代替数组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;
}

推荐阅读