Vector(向量): C++ 中的一种数据结构,确切的说是一个类。它相当于一个动态的数组,当程序员无法知道自己需要的数组的规模多大时,用其来解决问题可以达到最大节约空间的目的。
用法:
1.文件包含:
首先在程序开头处加上 #include<vector> 以包含所需要的类文件 vector。
还有一定要加上 using namespace std;
2.变量声明:
2.1 例: 声明一个 int 向量以替代一维的数组: vector <int> a; (等于声明了一个 int 数组 a[],大小没有指定,可以动态的向里面添加删除)。
2.2 例: 用 vector 代替二维数组.其实只要声明一个一维数组向量即可,而一个数组的名字其实代表的是它的首地址,所以只要声明一个地址的向量即可,即: vector <int *> a 。同理想用向量代替三维数组也是一样,vector <int**>a; 再往上面依此类推。
3.具体的用法以及函数调用:
3.1 得到向量中的元素和数组一样,例如:
vector <int *> a int b = 5; a.push_back(b);//该函数下面有详解 cout<<a[0]; //输出结果为5
使用数组给向量赋值:
vector<int> v( a, a+sizeof(a)/sizeof(a[0]) );
或者:
int a[]={1,2,3,4,5,6,7,8,9}; typedef vector<int> vec_int; vec_int vecArray(a,a+9);
更多向量内容可以查看:C++ vector 容器浅析
C++ 数组的长度:
#include<iostream> using namespace std; template<class T> int length(T& arr) { //cout << sizeof(arr[0]) << endl; //cout << sizeof(arr) << endl; return sizeof(arr) / sizeof(arr[0]); } int main() { int arr[] = { 1,5,9,10,9,2 }; // 方法一 cout << "数组的长度为:" << length(arr) << endl; // 方法二 //cout << end(arr) << endl; //cout << begin(arr) << endl; cout << "数组的长度为:" << end(arr)-begin(arr) << endl; system("pause"); return 0; }
输出结果为:
数组的长度为:6 数组的长度为:6
对于字符串数组,可以用 strlen() 函数来获取字符串数组的长度。
数组在使用时可以是一个含有变量的表达式,但是,在数组声明时必须用常量表达式。例如:
// 合法 const int a=19; long b[a]; // 合法 const int a=19; long b[a+5]; // 不合法 int a=19; long b[a+5];
如果想声明一个任意长度的数组,可以用显式的类型转换,例如:
int a=19; int b[(const int)a];
也可以定义一个常量来声明,例如:
int a=19; const int a1=a; int b[a1];
数组初始化时可以用聚合方法,但是赋值时候不可以用聚合方法。举例如下:
合法:
int array[] = {5,10,20,40};
不合法:
int array[]; int main() { array[] = {5,10,20,40}; return 0; }
静态 int array[100]; 定义了数组 array,并未对数组进行初始化
静态 int array[100] = {1,2}; 定义并初始化了数组 array
动态 int* array = new int[100]; delete []array; 分配了长度为 100 的数组 array
动态 int* array = new int[100]{1,2}; delete []array; 为长度为100的数组array初始化前两个元素
感谢您的支持,我会继续努力的!
支付宝扫一扫,即可进行扫码打赏哦
1899C++ 数组
Vector(向量): C++ 中的一种数据结构,确切的说是一个类。它相当于一个动态的数组,当程序员无法知道自己需要的数组的规模多大时,用其来解决问题可以达到最大节约空间的目的。
用法:
1.文件包含:
首先在程序开头处加上 #include<vector> 以包含所需要的类文件 vector。
还有一定要加上 using namespace std;
2.变量声明:
2.1 例: 声明一个 int 向量以替代一维的数组: vector <int> a; (等于声明了一个 int 数组 a[],大小没有指定,可以动态的向里面添加删除)。
2.2 例: 用 vector 代替二维数组.其实只要声明一个一维数组向量即可,而一个数组的名字其实代表的是它的首地址,所以只要声明一个地址的向量即可,即: vector <int *> a 。同理想用向量代替三维数组也是一样,vector <int**>a; 再往上面依此类推。
3.具体的用法以及函数调用:
3.1 得到向量中的元素和数组一样,例如:
使用数组给向量赋值:
或者:
1898C++ 数组
C++ 数组的长度:
输出结果为:
对于字符串数组,可以用 strlen() 函数来获取字符串数组的长度。
1897C++ 数组
数组在使用时可以是一个含有变量的表达式,但是,在数组声明时必须用常量表达式。例如:
如果想声明一个任意长度的数组,可以用显式的类型转换,例如:
也可以定义一个常量来声明,例如:
1896C++ 数组
数组初始化时可以用聚合方法,但是赋值时候不可以用聚合方法。举例如下:
合法:
不合法:
1895C++ 数组
静态 int array[100]; 定义了数组 array,并未对数组进行初始化
静态 int array[100] = {1,2}; 定义并初始化了数组 array
动态 int* array = new int[100]; delete []array; 分配了长度为 100 的数组 array
动态 int* array = new int[100]{1,2}; delete []array; 为长度为100的数组array初始化前两个元素