我想我在这里做了一些错误的初始化,并想知道什么,以及为什么!(我并不担心在这里使用int4 --这是一个将由脚本生成的const映射)。
#include <unordered_map>
#include <string>
int main() {
const std::unordered_map<std::string, int[4]> m {
{ "alo", {2,2,1,2} },{ "bok", {1,4,0,7} }
};
}
编撰:
g++ -std=c++20 foo.cpp
foo.cpp:5:52: error:没有用于初始化“const std::unordered_map”(又名“const unordered_map”)
的匹配构造函数
发布于 2021-07-27 12:15:25
不能使用数组作为映射的元素,也不能使用数组作为任何其他标准容器的元素。
这是因为数组不是C++中的第一类构造。它们不是可复制的、可构造的或可分配的,这是std::map值的要求。
但是,可以将数组作为类的成员,并且此类包装器类可以用作容器的元素。标准库还为此类包装类提供了一个模板: std::array
https://stackoverflow.com/questions/68542084
复制相似问题