C++ 初始化静态常量std::pair<;字符串,向量<;字符串>&燃气轮机;
我有一个C++ 初始化静态常量std::pair<;字符串,向量<;字符串>&燃气轮机;,c++,initialization,stdvector,composite,std-pair,C++,Initialization,Stdvector,Composite,Std Pair,我有一个 class myclass { // ... static const vector<pair<string,vector<string>>> var; // ... }; 如果有一种方法可以在第一种方法中实现,那么语法是什么? 我已经搜索过了,但没有找到进行复合std::pair初始化的语法。例如,您可以使用 vector <string>myvec={"elem1", "elem2","elem3"}; v
class myclass
{
// ...
static const vector<pair<string,vector<string>>> var;
// ...
};
如果有一种方法可以在第一种方法中实现,那么语法是什么?
我已经搜索过了,但没有找到进行复合std::pair初始化的语法。例如,您可以使用
vector <string>myvec={"elem1", "elem2","elem3"};
vector myvec={“elem1”、“elem2”、“elem3”};
但是如何初始化复杂的向量
?
谢谢。一如既往地简单-只需使用初始值设定项列表和隐式转换在逻辑上嵌套每个实体。例如,我使用了您的代码,并制作了以下示例:
class A {
static const std::vector<std::pair<std::string, std::vector<std::string>>> var;
};
const std::vector<std::pair<std::string, std::vector<std::string>>> A::var = {
{"abc", {"def", "ghj"}}
};
您需要嵌套初始化
const std::vector<std::pair<std::string,std::vector<std::string>>> Foo::var =
{ // start of vector
{ "pair1", {"one", "two"}},
{ "pair2", {"three", "four"}},
{ "pair3", {"five", "six"}}
};// end of vector
这已经被问了很多次了。你没有搜索吗?是的,有。为什么不利用它呢?我已经搜索了可能的重复,但没有找到进行复合std::pair初始化的语法。例如,可以使用
vector myvec={“elem1”、“elem2”、“elem3}初始化向量代码>,但是如何初始化复杂的向量
?将使用此注释更新原始帖子。@npit大括号初始化可以嵌套。试试像这样的{“pair1”、{“element11”、“element12”}、{“pair2”、{“element21”、“element22”}}
谢谢你,维克托,这正是我需要的。
class A {
static const std::vector<std::pair<std::string, std::vector<std::string>>> var;
};
const std::vector<std::pair<std::string, std::vector<std::string>>> A::var = {
{"abc", {"def", "ghj"}}
};
std::vector<std::pair<std::string, std::vector<std::string>>>
^ ^ ^ ^ ^ ^
| | | | | |
{ { "abc" { "abc", "def" } } }
| | | | | |
| | |--------vector-----------| | |
| |--------------------------pair---------------------| |
|---------------------------vector-----------------------------|
const std::vector<std::pair<std::string,std::vector<std::string>>> Foo::var =
{ // start of vector
{ "pair1", {"one", "two"}},
{ "pair2", {"three", "four"}},
{ "pair3", {"five", "six"}}
};// end of vector
class Foo // this would be in the .h file
{
public:
static const std::vector<std::pair<std::string,std::vector<std::string>>> var;
};
// this part would be in the .cpp file
const std::vector<std::pair<std::string,std::vector<std::string>>> Foo::var =
{ // start of vector
{ "pair1", {"one", "two"}},
{ "pair2", {"three", "four"}},
{ "pair3", {"five", "six"}}
};// end of vector
int main()
{
for (const auto & p : Foo::var)
{
std::cout << p.first << "\t";
for (const auto & e : p.second)
{
std::cout << e << "\t";
}
std::cout << std::endl;
}
return 0;
}
pair1 one two
pair2 three four
pair3 five six