程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> C++中vector的用法實例解析

C++中vector的用法實例解析

編輯:關於C++

C++中vector的用法實例解析。本站提示廣大學習愛好者:(C++中vector的用法實例解析)文章只能為提供參考,不一定能成為您想要的結果。以下是C++中vector的用法實例解析正文


本文實例展現了C++中的vector用法,分享給年夜家供年夜家參考。詳細以下:

1、概述

vector是C++尺度模板庫中的部門內容,它是一個多功效的,可以或許操作多種數據構造和算法的模板類和函數庫。vector是一個容器,它可以或許寄存各類類型的對象,簡略地說,vector是一個可以或許寄存隨意率性類型的靜態數組,可以靜態轉變年夜小。
例如:

// c說話作風
int myHouse[100] ;
// 采取vector
vector<int> vecMyHouse(100);

當如上界說後,vecMyHouse便可以寄存100個int型的數據了。

1. 它可以像通俗數組一樣拜訪
例如:

vecMyHouse[50] = 1024;

2. 你可以次序地向容器中填湊數據
例如:

int i =0 ;
for( ;i< 25; i++ )
{
vecMyHouse.push_back(1);
}

3. 它還可以靜態地轉變它的年夜小,經由過程上面這條語句完成
將容器的年夜小改成400,如許容器中便可以包容400個int型數據了
例如:

vecMyHouse.resize(400);

4. 你也能夠在容器中裝入自界說的數據類型
例如:

// 自界說一個class
class Cmyclass
{
};
// 界說一個寄存class的容器
vector<Cmyclass> vecMyHouse;

5. 你可以在界說容器時為它賦初值

// 界說一個包容100個int型數據的容器,初值賦為0
vector<int> vecMyHouse(100,0);

6. 你可以把一個容器的對象賦值給別的一個容器
例如:

// 界說一個包容100個int型數據的容器,初值賦為0
vector<int> vecMyHouse(100,0);
// 界說一個新的容器,內容與上述容器一樣
vector<int> myVec ;
myVec = vecMyHouse;

2、 以上是vector容器的簡略引見,上面將具體引見它的其他功效:

1. 為了應用vector,必需在你的頭文件中包括上面的代碼:

#include <vector>

2. vector屬於std定名域的,是以須要經由過程定名限制,可以在文件開首加上

using std::vector;

或許

using namespace std;

或許直接在應用vector的代碼前加前綴
例如:

std::vector<int> myHouse;

3. vector供給以下函數或操作:
上面羅列了部門經常使用的功效

// 界說一個vector
std::vector<int> c;

可使用的功效:
c.clear()         移除容器中一切數據。
c.empty()         斷定容器能否為空。
c.erase(pos)        刪除pos地位的數據
c.erase(beg,end) 刪除[beg,end)區間的數據
c.front()         傳回第一個數據。
c.insert(pos,elem)  在pos地位拔出一個elem拷貝
c.pop_back()     刪除最初一個數據。
c.push_back(elem) 在尾部參加一個數據。
c.resize(num)     從新設置該容器的年夜小
c.size()         回容器中現實數據的個數。
c.begin()           前往指向容器第一個元素的迭代器
c.end()             前往指向容器最初一個元素的迭代器

3、上面描寫一下甚麼是迭代器

迭代器相當於指針,例如:

// 關於變量而言,應用指針指向對應的變量
// 今後便可以應用 * 加指針來操作該變量了
int a = 10;
int *p;
p = &a;

應用指針操作該變量
例如: *p = 11; // 操作後a變成 11
關於容器,應用迭代器操作容器中對應地位的值
當迭代器指向了容器中的某地位,則可使用 * 加迭代器操作該地位了

// 界說一個vector
std::vector<int> myVec;
//添加10個元素
for(int j =0 ; j<10 ; j++)
{
myVec.push_back(j);
}

// 界說一個迭代器
std::vector<int>::iterator p;
// 指向容器的首個元素
p = myVec.begin();
// 挪動到下一個元素
p ++;
// 修正該元素賦值
*p = 20 ; //< 則myVec容器中的第二個值被修正為了20
// 輪回掃描迭代器,轉變一切的值
p = myVec.begin();
for( ; p!= myVec.end(); p++ )
{
*p = 50;
}

以上簡略講述了vector的用法,僅供入門之用,上面以實例情勢持續加以解釋。

1.vector 的數據的存入和輸入:

#include<stdio.h>
#include<vector>
#include <iostream>
using namespace std;
void main()
{
 int i = 0;
  vector<int> v;
  for( i = 0; i < 10; i++ )
 {
      v.push_back( i );//把元素一個一個存入到vector中
 }
  //對存入的數據清空
 for( i = 0; i < v.size(); i++ )//v.size() 表現vector存入元素的個數
 {
     cout << v[ i ] << " "; //把每一個元素顯示出來
 }
 cont << endl;
}

注:你也能夠用v.begin()和v.end() 來獲得vector開端的和停止的元素地址的指針地位。

你也能夠如許做:

vector<int>::iterator iter;
for( iter = v.begin(); iter != v.end(); iter++ )
{
  cout << *iter << endl;
}

2. 關於二維vector的界說。
1)界說一個10個vector元素,並對每一個vector符值1-10。

#include<stdio.h>
#include<vector>
#include <iostream>
using namespace std;
void main()
{
int i = 0, j = 0;
//界說一個二維的靜態數組,有10行,每行是一個用一個vector存儲這一行的數據。
//所以每行的長度是可以變更的。之所以用到vector<int>(0)是對vector初始化,不然不克不及對vector存入元素。
vector< vector<int> > Array( 10, vector<int>(0) );
for( j = 0; j < 10; j++ )
{
 for ( i = 0; i < 9; i++ )
 {
  Array[ j ].push_back( i );
 }
}
for( j = 0; j < 10; j++ )
{
 for( i = 0; i < Array[ j ].size(); i++ )
 {
  cout << Array[ j ][ i ] << " ";
 }
 cout<< endl;
}
}

2)界說一個行列都是變更的數組。

#include<stdio.h>
#include<vector>
#include <iostream>
using namespace std;
void main()
{
int i = 0, j = 0;
vector< vector<int> > Array;
vector< int > line;
for( j = 0; j < 10; j++ )
{
 Array.push_back( line );//要對每個vector初始化,不然不克不及存入元素。
 for ( i = 0; i < 9; i++ )
 {
  Array[ j ].push_back( i );
 }
}
for( j = 0; j < 10; j++ )
{
 for( i = 0; i < Array[ j ].size(); i++ )
 {
  cout << Array[ j ][ i ] << " ";
 }
 cout<< endl;
}
}
 

應用 vettor erase 指定元素,示例以下:

#include "iostream"
#include "vector"
using namespace std;
int main()
{
  vector<int> arr;
  arr.push_back(6);
  arr.push_back(8);
  arr.push_back(3);
  arr.push_back(8);
  for(vector<int>::iterator it=arr.begin(); it!=arr.end(); )
  {
    if(* it == 8)
    {
      it = arr.erase(it);
    }
    else
    {
      ++it;
    }
  }
  cout << "After remove 8:\n";
  for(vector<int>::iterator it = arr.begin(); it < arr.end(); ++it)
  {
    cout << * it << " ";
  }
  cout << endl;
}

願望本文所述實例對年夜家控制C++中vector用法起到必定的贊助感化。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved