zoukankan      html  css  js  c++  java
  • 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

    在此不再赘述。

  • 相关阅读:
    洛谷 P4160 [SCOI2009]生日快乐 题解
    洛谷 P1041 传染病控制 题解
    洛谷 P3154 [CQOI2009]循环赛 题解
    洛谷 P1144 最短路计数 题解
    洛谷 P2296 寻找道路 题解
    洛谷 P1514 引水入城 题解
    洛谷 P2661 信息传递 题解
    洛谷 P3958 奶酪 题解
    洛谷 P3501 [POI2010]ANT-Antisymmetry 题解
    【LGR-069】洛谷 2 月月赛 II & EE Round 2 Div.2 A-C题解
  • 原文地址:https://www.cnblogs.com/dapeng-bupt/p/6914351.html
Copyright © 2011-2022 走看看