[英]Initializer with c++14
這是在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 <T>的另一種情況:
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}
哪種更好的初始化方式? 一些性能案例?
()和{}初始化之間的差異有時會令人不快-在哪些情況下存在差異,在哪些情況下其行為完全相同? 這就是為什么存在關於該主題的幾篇非常不錯的文章的原因:我只想提及一些:
我個人更喜歡將花括號{}僅用於類似數組的初始化,並且對於構造函數調用使用圓括號(),但它取決於特定的用例。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.