如何对一个元素比较多的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?谢谢

这样也报错:

目前只有这样不报错:
展开
 我来答
kaixingui2012
2014-12-31 · TA获得超过4.2万个赞
知道大有可为答主
回答量:1.4万
采纳率:81%
帮助的人:6332万
展开全部

你用容器,没有其它的办法!

你可以改用数组啊:

#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;
}
追问
没怎么用过容器。。这个方法好~
追答
不客气
捐你妹8
2014-12-31 · TA获得超过638个赞
知道小有建树答主
回答量:351
采纳率:0%
帮助的人:365万
展开全部
用2013可以
更多追问追答
追问
2012里只能用push_back一个个去添加么?
追答
貌似是,毕竟是新东西,原来的一定不支持的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式