2016-03-13 102 views

回答

9

C++ 11有一個初始化列表的概念。要使用它,請添加一個接受類型爲std::initializer_list<T>的單個參數的構造函數。例如:

#include <vector> 
#include <initializer_list> 
#include <iostream> 
struct S 
{ 
    std::vector<int> v_; 
    S(std::initializer_list<int> l) 
    : v_(l) 
    { 
    std::cout << "constructed with initializer list of length " << l.size(); 
    } 
}; 

int main() 
{ 
    S s = { 1, 2, 3 }; 
    return 0; 
} 
2

initializer_list可以(像其他STL容器)重複和size可以查詢。這可以讓你按照yuyoyuppe的其他答案所做的指示立即將它送到vector。但是,您可能有其他意圖進行初始化,並執行諸如直接對列表項執行操作而不進行復制。

#include <initializer_list> 
#include <iostream> 
#include <algorithm> 

struct S 
{ 
    int thesum; 
    int items; 
    S(std::initializer_list<int> l) : 
    thesum(std::accumulate(l.begin(), l.end(), 0)), 
    items(l.size()) 
    {} 
}; 

int main() 
{ 
    S s = { 1, 2, 3 }; 
    std::cout << s.items << std::endl; 
    std::cout << s.thesum << std::endl; 
    return 0; 
} 

這將打印

3 
6 

參見: