Shi*_*bli 3 c++ structure initialization vector
我有
struct Vector {
float i,j,k;
}
Run Code Online (Sandbox Code Playgroud)
我想将以下声明的vec的所有元素归零(i,j,k = 0)
std::vector <Vector> vec;
vec.resize(num,0);
Run Code Online (Sandbox Code Playgroud)
我不想使用reserve()然后push_back()逐个零.另一件事是,在成功初始化vec之后,我想在操作之后将vec的所有成员再次设置为零.有没有类似memset的矢量?
编辑:
我比较了Mike Seymour和Xeo的答案中的所有方法,size_t size = vec.size();
vec.clear();
vec.resize(size);如果它们在循环中频繁重复,则结果
最快.
这很简单:
vec.resize(num);
Run Code Online (Sandbox Code Playgroud)
或者用所需的大小初始化它:
std::vector<Vector> vec(num);
Run Code Online (Sandbox Code Playgroud)
构造函数和resize将使用值初始化对象填充新元素.没有默认构造函数(例如您的Vector)的类型的初始化对象将使所有数字成员初始化为零.
要将所有内容重置为零
size_t size = vec.size();
vec.clear();
vec.resize(size);
Run Code Online (Sandbox Code Playgroud)
要么:
std::fill(vec.begin(), vec.end(), Vector());
Run Code Online (Sandbox Code Playgroud)
或者,效率较低但具有强大的例外保证:
std::vector<Vector>(vec.size()).swap(vec);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7329 次 |
| 最近记录: |