程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> c++中vector向量幾種情況的總結(向量指針,指針的向量)

c++中vector向量幾種情況的總結(向量指針,指針的向量)

編輯:關於C++

1.標准庫vector類型

vector 是同一種類型的對象的集合,每個對象都有一個對應的整數索引值。標准庫將負責管理與存儲元素相關的內存。我們把 vector 稱為容器,是因為它可以包含其他對象。一個容器中的所有對象都必須是同一種類型的。

用 vector之前,必須包含相應的頭文件。

#include

using std::vector;

vector 是一個類模板(class template)。使用模板可以編寫一個類定義或函數定義,而用於多個不同的數據類型。因此,我們可以定義保存 string 對象的 vector,或保存 int 值的 vector,又或是保存自定義的類類型對象vector。使用類模板時只需要簡單了解類模板是如何定義的就可以了。聲明從類模板產生的某種類型的對象,需要提供附加信息,信息的種類取決於模板。以 vector 為例,必須說明 vector 保存何種對象的類型,通過將類型放在類模板名稱後面的尖括號中來指定類型:

vector ivec; // ivec holdsobjects of type int

vector Sales_vec; //holds Sales_items

注意:和其他變量定義一樣(作為定義變量看待,如 int a;float b;),定義 vector 對象要指定類型和一個變量的列表。上面的第一個定義,類型是vector(相當於int,或double),該類型即是含有若干 int 類型對象的 vector,變量名為 ivec(相當於a,b)。第二個定義的變量名是 Sales_vec,它所保存的元素 是 Sales_item 類型的對象。即,

定義方法為:vector<類型> 名稱

vector<類型> :作為一個整體,是類型,相當於int,float。

名稱 相當於變量的名字,a,b。

則以下幾種都是成立的

vector k;//向量
vectorkk;//int指針的向量,以後再詳細斟酌
vector*kkk;//vector向量指針
vector*kkkk;//int指針的向量指針(對比int*p理解,指針變量前面的“*”表示該變量的類型為指針變量,p是指針變量名,而不是*p)

vector 不是一種數據類型,而只是一個類模板,可用來定義任意多種數據類型。vector 類型的每一種都指定了其保存元素的類型。因此,vector 和 vector 都是數據類型。

2.Vector向量幾種情況的總結

1) vectork;//向量

#include
#include
using namespace std;
int main()
{
	vector k;
	for (int j = 0; j<12; j++)
	{
		k.push_back(j);//向kk中追加值
	}
	for (int j = 0; j<12; j++)
	{
		cout <

2)vector kk;//int指針的向量
#include
#include
using namespace std;
int main()
{
	vector k;
	int *p = new int[15];
	for (int j = 0; j<15; j++)
	{
		p[j] = j;
		k.push_back(&p[j]);
	}
	for (int i = 0; i < 15;i++)
	{
		cout << *k[i]<< " ";//因為向量容器裡面都是int型的指針變量,
	}                           //所以值都是指針,所以需要間接訪問運算符*
	delete[]p;
	system("pause");
	return 0;
}

3)vector *kkk;//vector向量指針
#include
#include
using namespace std;
int main()
{
	vector *k;//vector向量指針
	k = new vector[5];
	//相當於int *p = new int[5];即vector *kkk=new vector[5];
	for (int i = 0; i<5; i++)
	{
		for (int j = 0; j<10; j++)
		{
			k[i].push_back(j);//像向量指針中追加值
		}
	}
	for (int i = 0; i<5; i++)
	{
		for (int j = 0; j < k[i].size(); j++)
			cout <<  k[i][j] << "  ";
		cout << endl;
	}
	delete[] k;
	system("pause");
}

4)vector *kkkk;//int指針的向量指針
#include
#include
using namespace std;
int main()
{
	vector *k;//int指針的向量指針
	k = new vector[5];
	int *p = new int[10];
	for (int i = 0; i < 5; i++)
	{
		for (int j = 0; j < 10; j++)
		{
			p[j] = j;
			k[i].push_back(&p[j]);
		}
	}
	for (int i = 0; i < 5; i++)
	{
		for (int j = 0; j < 10; j++)
		{
			cout<<*k[i][j]<<"  ";
		}
		cout << endl;
	}
	delete[]p;
	delete[]k;
	system("pause");
}
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved