在 C++14 中初始化类型的更好方法是:
#include <iostream>
#include <vector>
using namespace std;
int main() {
// your code goes here
int i = 0;
int _initializer_list_i {0};
std::cout << "Initialize with = " << std::to_string(i);
std::cout << "Initialize with std::initializer_list " << std::to_string(_initializer_list_i);
std::cout << "\nNormal intialize: \n";
std::vector<int> v(10, 22);
for(auto it = v.begin(); it != v.end(); it++)
std::cout << *it << "\n";
std::cout << "\n\nUsing intializer_list: \n";
std::vector<int> v2{10, 22};
for(auto it = v2.begin(); it != v2.end(); it++)
std::cout << *it << "\n";
return 0;
}
当我使用 {} 时,它会调用 std::initializer_list 的构造函数,但结果与 = 相同。这里有一些性能案例吗?
int i = 0;
int _initializer_list_i {0};
这是另一个使用 std::vector
std::vector<int> v(10, 22);//allocate 10 with value 22
std::vector<int> v2{10, 22}; //Call std::initializer_list with 2 positions{10, 20}
哪种初始化方式更好?一些性能案例?
最佳答案
operator= 和 {} init 之间不会有性能损失,因为它很可能会被编译为 int 的相同代码。
关于 vector - 构造函数 (a,b) 不同于初始化列表。
总的来说,我会推荐你阅读this .
关于c++ - 使用 C++14 的初始化器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33700846/