c++中vector向量几种情况的总结(向量指针,指针的向量)
2017-09-27 14:06
561 查看
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,或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; } **2)vector <vector> 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; }
**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"); }
**4)vector<int*> *kkkk;//int指针的向量指针** [cpp] view plain copy #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"); }
相关文章推荐
- Vector向量几种情况的总结
- 【算法专题】工欲善其事必先利其器—— C++ STL中vector(向量/不定长数组)的常用方法总结
- C++ 指针 new delete 赋值各种情况总结
- C++ 动态数组类模板(向量容器)vector与STL用法总结
- 【C++】STL常用容器总结之三:向量vector
- 关于Java空指针异常的几种情况的总结(java.lang.NullPointerException)
- c++指针的使用总结——开始菜鸟之路!
- C++ STL之vector用法总结
- 总结C++中取成员函数地址的几种方法
- C++学习:向量vector
- c++ A类包含B类指针,B类包含A类指针的情况
- C++ 7.7 类的成员函数、this 指针、默认构造函数、默认初始化(总结)
- C++:STL常用函数模块总结(vector)
- C/C++ 函数指针 总结
- C++中vector向量的用法(自整)
- C++ STL之vector用法总结
- C++中值传递、指针传递、引用传递的总结
- 【c++】必须在类的初始化列表中初始化的的几种情况