为什么这不能编译
#include <vector>
#include <array>
std::array<std::vector<const char*>, 2> s = {
{"abc", "def"},
{"ghi"}
};
Run Code Online (Sandbox Code Playgroud)
但这确实
#include <vector>
#include <array>
std::array<std::vector<const char*>, 2> s = {
std::vector{"abc", "def"},
{"ghi"}
};
Run Code Online (Sandbox Code Playgroud)
如果出于某种原因std::vector第一个需要,为什么第二个不需要呢?
您需要一套额外的{... }:
std::array<std::vector<const char*>, 2> s = { // #1
{ // #2
{"abc", "def"}, // #3
{"ghi"} // #4
}
};
Run Code Online (Sandbox Code Playgroud)
尝试描述原因:
vector。std::array。来自cppreference:此容器是一个聚合类型,其语义与将 C 样式数组T[N]作为其唯一非静态数据成员的结构体具有相同的语义。std::array它自己。这
std::array<std::vector<const char*>, 2> s = {
std::vector{"abc", "def"},
{"ghi"}
};
Run Code Online (Sandbox Code Playgroud)
之所以有效,是因为初始化列表被推导为initializer_list<vector<const char*>>。
| 归档时间: |
|
| 查看次数: |
118 次 |
| 最近记录: |