STL中vector的初始化


vector可用於代替C++中的數組,一般一致認為應該多用vector,因為它的效率更高,而且具備很好的異常安全性。而且vector是STL推薦使用的默認容器,STL中向量是使用數組實現的,因此向量具有順序表的特點,可以快速隨機存取數據。向量是一種數據類型的對象的集合,每個對象根據其位置有一個整數索引值與其對應,類似於數組。

使用向量之前,必須包含相應的頭文件:

 

#include<vector>
using std::vector

同時也應當注意,vector是一個模板類,而非數據類型。所以在定義對象時必須說明vector保存的對象類型。以下給出一些初始化的例子:

1 vector<int>  v;   //定義向量對象
2 vector<int>  v(v1);   //定義向量對象v,並且用v1初始化
3 vector<int>  v2(n,i);   //定義向量對象v2,包含了n個值為i的元素
4 vector<int>  v3(n);   //定義向量對象v3,其中包含了n個元素值為0的元素

接着介紹一種使用數組初始化向量元素的方式,這種方式在刷題時非常常見,有必要掌握:

 1 #include "stdafx.h"
 2 #include <stdio.h>
 3 #include <string.h>
 4 #include <iostream>
 5 #include <vector>
 6 #include <algorithm>
 7 using namespace std;
 8 class Solution {
 9 public:
10     int arrayPairSum(vector<int>& nums) {
11         int res = 0;
12         vector<int>::size_type nsize = nums.size();
13         sort(nums.begin(), nums.end());
14         for (int i = 0; i<nsize; i += 2) {
15             res += nums[i];
16         }
17         return res;
18     }
19 };
20 int main()
21 {
22     Solution a;
23     int num[4] = { 1, 4, 3, 2 };
24     int numLength = sizeof(num) / sizeof(num[0]);
25     vector<int> nums(num, num + numLength);  //使用數組初始化向量
26     for (vector<int>::iterator it = nums.begin(); it != nums.end(); it++)  //使用迭代器訪問向量元素
27         cout << *it << "  ";
28     cout << endl;
29     //cout << a.arrayPairSum(nums) << endl;
30     return 0;
31 
32 }

這里有兩點需要說明:1、迭代器類似於指針,可以用迭代器訪問向量中相應的元素;2、nums.begin()表示迭代器指向nums的第一個元素,但是nums.end()則表示迭代器指向nums最后一個元素的下一個元素,實際上是不對應數值的,在使用時要多加小心。

vector的使用其實還可以調用一些常用的借口,比如insert,push_back之類的,vector的接口使用說明參見:

http://www.cplusplus.com/reference/vector/vector/?kw=vector

在此不再贅述。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM