大家好,又见面了,我是你们的朋友全栈君。
1.标准库vector类型
vector 是同一种类型的对象的集合。每一个对象都有一个相应的整数索引值。标准库将负责管理与存储元素相关的内存。我们把 vector 称为容器,是由于它能够包括其它对象。一个容器中的全部对象都必须是同一种类型的。
用 vector之前,必须包括对应的头文件。
#include <vector>
using std::vector;
vector 是一个类模板(class template)。使用模板能够编写一个类定义或函数定义,而用于多个不同的数据类型。
因此。我们能够定义保存 string 对象的 vector。或保存 int 值的 vector。又或是保存自己定义的类类型对象vector。使用类模板时仅仅须要简单了解类模板是怎样定义的就能够了。
声明从类模板产生的某种类型的对象,须要提供附加信息。信息的种类取决于模板。
以 vector 为例。必须说明 vector 保存何种对象的类型,通过将类型放在类模板名称后面的尖括号中来指定类型:
vector<int> ivec; // ivec holdsobjects of type int
vector<Sales_item> Sales_vec; //holds Sales_items
注意:和其它变量定义一样(作为定义变量看待。如 int a;float b;),定义 vector 对象要指定类型和一个变量的列表。上面的第一个定义,类型是vector<int>(相当于int。或double)。该类型即是含有若干 int 类型对象的 vector,变量名为 ivec(相当于a,b)。第二个定义的变量名是 Sales_vec,它所保存的元素 是 Sales_item 类型的对象。
即,
定义方法为:vector<类型> 名称
vector<类型> :作为一个总体,是类型,相当于int,float。
名称 相当于变量的名字,a,b。
则下面几种都是成立的
vector<int> k;//向量
vector<int*>kk;//int指针的向量。以后再具体斟酌
vector<int>*kkk;//vector向量指针
vector<int*>*kkkk;//int指针的向量指针(对照int*p理解,指针变量前面的“*”表示该变量的类型为指针变量,p是指针变量名,而不是*p)
vector 不是一种数据类型,而仅仅是一个类模板,可用来定义随意多种数据类型。vector 类型的每一种都指定了其保存元素的类型。因此。vector<int> 和 vector<string> 都是数据类型。
2.Vector向量几种情况的总结
1) vector<int>k;//向量
#include<iostream>
#include<vector>
using namespace std;
int main()
{
vector<int> k;
for (int j = 0; j<12; j++)
{
k.push_back(j);//向kk中追加值
}
for (int j = 0; j<12; j++)
{
cout <<k[j] << " ";
}
system("pause");
return 0;
}
<img src="https://img-blog.csdnimg.cn/2022010710044489370.png" alt="" />
2)vector<int*> kk;//int指针的向量
#include<iostream>
#include<vector>
using namespace std;
int main()
{
vector<int*> 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;
}
<img src="https://img-blog.csdnimg.cn/2022010710044583773.png" alt="" />
3)
vector<int> *kkk;//vector向量指针
#include<iostream>
#include<vector>
using namespace std;
int main()
{
vector<int> *k;//vector向量指针
k = new vector<int>[5];
//相当于int *p = new int[5];即vector<int> *kkk=new vector<int>[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");
}
<img src="https://img-blog.csdnimg.cn/2022010710044570729.png" alt="" />
4)
vector<int*> *kkkk;//int指针的向量指针
#include<iostream>
#include<vector>
using namespace std;
int main()
{
vector<int*> *k;//int指针的向量指针
k = new vector<int*>[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");
}
内容来自,http://www.2cto.com/kf/201208/149635.html
借鉴之,
转载于:https://www.cnblogs.com/gccbuaa/p/7211437.html
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/148374.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...