欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

c++中vector向量几种情况的总结(向量指针,指针的向量)

程序员文章站 2022-05-12 16:38:14
1.标准库vector类型 vector 是同一种类型的对象的集合,每个对象都有一个对应的整数索引值。标准库将负责管理与存储元素相关的内存。我们把 vector 称为容器,是因为...

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 <

[j]>
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");
}
*>
*>
[j]>