vector的初始化方式
- 1,使用拷貝初始化時候,即使用=的時候,只可以提供一個初始值
- 2,如果提供一個類內初始值,只可以使用拷貝初始化或者使用花括號的方式初始化
- 3,如果提供的是初始元素值的列表,只可以把初始值都放在花括號里面進行列表初始化,不可以使用圓括號
值的初始化
- 有些類必須明確提供初始數值,如果元素的類型不支持默認初始化,就必須提供初始的元素數值
- 只提供了元素的數量但是沒有設定初始數值,只可以使用直接初始化
- 花括號里面的數值必須和元素的類型相同
- vector<int> v1{10}; //一個元素,元素的數值是10
- vector<int> v1{10,1};//兩個元素,元素的數值是10和1
- vector<string> v1{10};//因為花括號里面的數值和元素的類型不一樣,相當于有10個默認的初始化元素,字符串默認是'\0'
注意事項
- 如果循環體內部包含有向vector添加元素的語句,則不可以使用范圍for循環,因為使用范圍for循環會改變其所遍歷的序列的大小
- 范圍for循環 for(declaration : expression){ statement }
- expression是一個序列,比如使用花括號括起來的初始值的列表、數組、string、vector等類型,他們都可以返回迭代器的begin和end成員
- declaration是一個變量,比如int、float等,序列中的每個元素都得能轉化成該變量的類型,最簡單的方式是使用auto,自定義類型轉換,不需要用戶自己指定
- 而且,對于范圍變量要使用引用類型,這樣才能對于元素執行寫操作。
- 因為可以使用push_back(元素),對vector增加元素,但是使用范圍for語句是要知道最后的一個位置的,因為vector的最后位置不確定,所以無法使用范圍for語句
- vector的操作類似于string,比如v.size()、v.empty()
?
?