c++ - 使用 C++14 的初始化器

标签 c++ c++11 c++14 initializer-list

在 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/

相关文章:

c++ - 我应该停止使用 OpenCV 吗?

c++ - 为什么 std::map::insert 不能采用键和值而不是 std::pair?

c++ - 如何一起使用 C++ 和 C 可变参数?

c++11/14 make_unique std::string 的模糊重载

c++ - Cpp 在类中定义

c++ - 简单的从文本文件中读取算法不起作用

c++ - C++中的自定义异常,用于对函数的无效输入

c++ - 如何为结构的数据元素赋值

c++ - 调用了错误类型的显式构造函数

c++ - 找出构成给定数字所需的最少位数