定义stl容器常量如何初始化??????

Fn_1088 2012-09-28 04:30:39
比如

//头文件
clase A
{
private:
static const std::vector<std::string> m_vec;
}

//源文件
const std::vector<std::string> A::m_vec = //我想初始化m_vec有3个不同的元素,比如:"one","two","three",这里怎么定义?
...全文
263 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 的回复:]

哦 我Windows平台的 用VS2010编译不了 期待2012
谢谢了
[/Quote]
期待下一代吧 2012不支持
Fn_1088 2012-09-28
  • 打赏
  • 举报
回复
哦 我Windows平台的 用VS2010编译不了 期待2012
谢谢了
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 的回复:]

引用 5 楼 的回复:

C++11还能
C/C++ code
const std::vector<std::string> A::m_vec = {"one","two","three"};

这么写。
只是一些编译器不支持而已。

请问坏先生,目前有什么编译器支持C++11呢?谢谢
[/Quote]
gcc和llvm 支持的比较多,个人感觉不够稳定。
这个代码在gcc 4.4版可以编译
Fn_1088 2012-09-28
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]

C++11还能
C/C++ code
const std::vector<std::string> A::m_vec = {"one","two","three"};

这么写。
只是一些编译器不支持而已。
[/Quote]
请问坏先生,目前有什么编译器支持C++11呢?谢谢
Fn_1088 2012-09-28
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

C/C++ code
char*x[]={"one","two","three"};
const std::vector<std::string> A::m_vec( x , x + 3 );
[/Quote]
这个可以,只是有点多余的感觉,不如直接用字符串数组,我本来就是不想用数组的,呵呵,还是要感谢前辈
Fn_1088 2012-09-28
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

如果想直接初始化不同数值是无法直接做到的
只能初始化n个相同值,如m_vec(3,"hello");
如果非要做到初始化不同数值,只能派生一个类,自己扩充来写
如:
class d_vector : public std::vector
{
d_vector(int n,_Ty& t1,...)
{
}
}
[/Quote]

嗯 我有这样想过 就是有点麻烦了 想追求直接使用的方法 不过还是谢谢了
Phoenix_FuliMa 2012-09-28
  • 打赏
  • 举报
回复
++
[Quote=引用 2 楼 的回复:]

C/C++ code
char*x[]={"one","two","three"};
const std::vector<std::string> A::m_vec( x , x + 3 );
[/Quote]
zhaoZero41 2012-09-28
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

C/C++ code
char*x[]={"one","two","three"};
const std::vector<std::string> A::m_vec( x , x + 3 );
[/Quote]

先定义后声明的话,这么写不会有问题么?
  • 打赏
  • 举报
回复
C++11还能
const std::vector<std::string> A::m_vec = {"one","two","three"};

这么写。
只是一些编译器不支持而已。
神的理想 2012-09-28
  • 打赏
  • 举报
回复
用字符数组或push_back一个个加进去
iamnobody 2012-09-28
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

C/C++ code
char*x[]={"one","two","three"};
const std::vector<std::string> A::m_vec( x , x + 3 );
[/Quote]
+
  • 打赏
  • 举报
回复
	char*x[]={"one","two","three"};
const std::vector<std::string> A::m_vec( x , x + 3 );
GIS_wudi 2012-09-28
  • 打赏
  • 举报
回复
如果想直接初始化不同数值是无法直接做到的
只能初始化n个相同值,如m_vec(3,"hello");
如果非要做到初始化不同数值,只能派生一个类,自己扩充来写
如:
class d_vector : public std::vector
{
d_vector(int n,_Ty& t1,...)
{
}
}

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧