如何对一个元素比较多的vector进行初始化?比如通过"="和"{}"方式
结构体定义:structscheme_element{std::stringname;std::stringsub_element_name;std::stringval...
结构体定义:
struct scheme_element
{
std::string name;
std::string sub_element_name;
std::string val;
scheme_element(std::string Name, std::string Sub_element_name, std::string Val)
{
name = Name;
sub_element_name = Sub_element_name;
val = Val;
}
};
想要使用如下方法定义一个名为scheme_elements 的vector并初始化,但是会报错:
std::vector<scheme_element> scheme_elements;
std::vector<scheme_element> scheme_elements =
{
/*在这里错误提示:不允许使用"{}"对std::vector<scheme_element,std::allocator<scheme_element>>"类型的对象进行初始化*/
{"a:dk1", "a:sysClr", "windowText"},
{"a:lt1", "a:sysClr", "window"},
{"a:dk2", "a:srgbClr", "1F497D"},
{"a:lt2", "a:srgbClr", "EEECE1"},
{"a:accent1", "a:srgbClr", "4F81BD"},
{"a:accent2", "a:srgbClr", "C0504D"},
{"a:accent3", "a:srgbClr", "9BBB59"},
{"a:accent4", "a:srgbClr", "8064A2"},
{"a:accent5", "a:srgbClr", "4BACC6"},
{"a:accent6", "a:srgbClr", "F79646"},
{"a:hlink", "a:srgbClr", "0000FF"},
{"a:folHlink", "a:srgbClr", "800080"}
};
我是在VS2012环境下开发的c++程序,请问是不是上边语法是C++11标准的,所以平台不支持?
如果按照常用的初始化方法应该怎么方便的初始化上边的vector?谢谢
这样也报错:
目前只有这样不报错: 展开
struct scheme_element
{
std::string name;
std::string sub_element_name;
std::string val;
scheme_element(std::string Name, std::string Sub_element_name, std::string Val)
{
name = Name;
sub_element_name = Sub_element_name;
val = Val;
}
};
想要使用如下方法定义一个名为scheme_elements 的vector并初始化,但是会报错:
std::vector<scheme_element> scheme_elements;
std::vector<scheme_element> scheme_elements =
{
/*在这里错误提示:不允许使用"{}"对std::vector<scheme_element,std::allocator<scheme_element>>"类型的对象进行初始化*/
{"a:dk1", "a:sysClr", "windowText"},
{"a:lt1", "a:sysClr", "window"},
{"a:dk2", "a:srgbClr", "1F497D"},
{"a:lt2", "a:srgbClr", "EEECE1"},
{"a:accent1", "a:srgbClr", "4F81BD"},
{"a:accent2", "a:srgbClr", "C0504D"},
{"a:accent3", "a:srgbClr", "9BBB59"},
{"a:accent4", "a:srgbClr", "8064A2"},
{"a:accent5", "a:srgbClr", "4BACC6"},
{"a:accent6", "a:srgbClr", "F79646"},
{"a:hlink", "a:srgbClr", "0000FF"},
{"a:folHlink", "a:srgbClr", "800080"}
};
我是在VS2012环境下开发的c++程序,请问是不是上边语法是C++11标准的,所以平台不支持?
如果按照常用的初始化方法应该怎么方便的初始化上边的vector?谢谢
这样也报错:
目前只有这样不报错: 展开
展开全部
你用容器,没有其它的办法!
你可以改用数组啊:
#include <iostream>
#include <vector>
using namespace std ;
struct a {
int x;
char s[10];
} ;
int main()
{
struct a aa[]={
{1,"aaaaa"},{2,"bbbbb"}
}; //用数组完成初始化
vector <struct a> bb ;
for( int i=0;i<2;i++ ) //非要存入容器,可以这样!!
bb.push_back( aa[i] );
return 0;
}
追问
没怎么用过容器。。这个方法好~
追答
不客气
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询