初始化一个空的STL容器有几种方法

时间:2022-02-26 17:29:27
一些代码静态检查工具会检查变量是否被初始化(如coverity),但是我们经常希望初始化一个空的容器。如

 vector<int> vMyNums;

像上面这样的操作被工具认为没有初始化。

问题是:有没有一种elegant的方式初始化一个空容器,而工具不报告警呢?

22 个解决方案

#1


得看源码了,很多种,当然还有一种也行,算法里面copy也是可以的

#2


vector<int> vMyNums;

 如果这算满意初始化,那直接扔了这个垃圾工具。

#3


我也不满意这个初始化,但是如果我要一个空的容器,该怎么初始化才能让工具满意呢?

#4


 vector<int> vMyNums = {};

如果你的编译器支持C++11

#5


引用 4 楼 mougaidong 的回复:
 vector<int> vMyNums = {};

如果你的编译器支持C++11

这个很好啊,之前没想到,但是需要C++11支持。
不知道有没有更好的办法?

#6


引用 5 楼 kingflight 的回复:
Quote: 引用 4 楼 mougaidong 的回复:

 vector<int> vMyNums = {};

如果你的编译器支持C++11

这个很好啊,之前没想到,但是需要C++11支持。
不知道有没有更好的办法?

你用什么编译器,什么版本?

#7


引用 6 楼 mougaidong 的回复:
Quote: 引用 5 楼 kingflight 的回复:

Quote: 引用 4 楼 mougaidong 的回复:

 vector<int> vMyNums = {};

如果你的编译器支持C++11

这个很好啊,之前没想到,但是需要C++11支持。
不知道有没有更好的办法?

你用什么编译器,什么版本?


用的是workbench 2.6 上的编译器,具体是什么版本还不知道呢,但应该不支持C++11。

#8


引用 2 楼 taodm 的回复:
vector<int> vMyNums;

 如果这算满意初始化,那直接扔了这个垃圾工具。

这有什么问题?不如说这个工具会认为这一行没有被初始化才是问题
我反而想问楼主怎么会使用这种工具?

#9


我看还是把工具扔了吧,调用默认构造函数都不算初始化,那什么算满意的初始化。

#10


楼主使用的是C语言的工具?

#11


人发明了工具和规矩,但人不能被工具和规矩限制死。
初始化一个空的STL容器有几种方法

#12


new 一个吧

#13


引用 8 楼 stereoMatching 的回复:
Quote: 引用 2 楼 taodm 的回复:

vector<int> vMyNums;

 如果这算满意初始化,那直接扔了这个垃圾工具。

这有什么问题?不如说这个工具会认为这一行没有被初始化才是问题
我反而想问楼主怎么会使用这种工具?


我也记得这样可以了,就是创建一个空的容器!

#14


看看构造函数

#15


初始化一个空的STL容器有几种方法

#16


一般这种工具,都有办法屏蔽某些告警的吧

#17


引用 15 楼 zhangyonghui2117 的回复:
初始化一个空的STL容器有几种方法


这是什么书?

#18


引用 17 楼 libralibra 的回复:
Quote: 引用 15 楼 zhangyonghui2117 的回复:

初始化一个空的STL容器有几种方法


这是什么书?
感觉是primer

#19


嗯,是 primer ,

#20


工具能设置选项不?这种工具不用也罢。

#21


vector<int> vMyNums(0);试试

#22


直接扔了这工具!!!要快!!!事不宜迟啊!!!

#1


得看源码了,很多种,当然还有一种也行,算法里面copy也是可以的

#2


vector<int> vMyNums;

 如果这算满意初始化,那直接扔了这个垃圾工具。

#3


我也不满意这个初始化,但是如果我要一个空的容器,该怎么初始化才能让工具满意呢?

#4


 vector<int> vMyNums = {};

如果你的编译器支持C++11

#5


引用 4 楼 mougaidong 的回复:
 vector<int> vMyNums = {};

如果你的编译器支持C++11

这个很好啊,之前没想到,但是需要C++11支持。
不知道有没有更好的办法?

#6


引用 5 楼 kingflight 的回复:
Quote: 引用 4 楼 mougaidong 的回复:

 vector<int> vMyNums = {};

如果你的编译器支持C++11

这个很好啊,之前没想到,但是需要C++11支持。
不知道有没有更好的办法?

你用什么编译器,什么版本?

#7


引用 6 楼 mougaidong 的回复:
Quote: 引用 5 楼 kingflight 的回复:

Quote: 引用 4 楼 mougaidong 的回复:

 vector<int> vMyNums = {};

如果你的编译器支持C++11

这个很好啊,之前没想到,但是需要C++11支持。
不知道有没有更好的办法?

你用什么编译器,什么版本?


用的是workbench 2.6 上的编译器,具体是什么版本还不知道呢,但应该不支持C++11。

#8


引用 2 楼 taodm 的回复:
vector<int> vMyNums;

 如果这算满意初始化,那直接扔了这个垃圾工具。

这有什么问题?不如说这个工具会认为这一行没有被初始化才是问题
我反而想问楼主怎么会使用这种工具?

#9


我看还是把工具扔了吧,调用默认构造函数都不算初始化,那什么算满意的初始化。

#10


楼主使用的是C语言的工具?

#11


人发明了工具和规矩,但人不能被工具和规矩限制死。
初始化一个空的STL容器有几种方法

#12


new 一个吧

#13


引用 8 楼 stereoMatching 的回复:
Quote: 引用 2 楼 taodm 的回复:

vector<int> vMyNums;

 如果这算满意初始化,那直接扔了这个垃圾工具。

这有什么问题?不如说这个工具会认为这一行没有被初始化才是问题
我反而想问楼主怎么会使用这种工具?


我也记得这样可以了,就是创建一个空的容器!

#14


看看构造函数

#15


初始化一个空的STL容器有几种方法

#16


一般这种工具,都有办法屏蔽某些告警的吧

#17


引用 15 楼 zhangyonghui2117 的回复:
初始化一个空的STL容器有几种方法


这是什么书?

#18


引用 17 楼 libralibra 的回复:
Quote: 引用 15 楼 zhangyonghui2117 的回复:

初始化一个空的STL容器有几种方法


这是什么书?
感觉是primer

#19


嗯,是 primer ,

#20


工具能设置选项不?这种工具不用也罢。

#21


vector<int> vMyNums(0);试试

#22


直接扔了这工具!!!要快!!!事不宜迟啊!!!