C++中数组,字符串,容器常用操作
数组
声明数组:
type arrayName[ arraySize]
,例如double balance[10];
初始化
double balance[4]={1,2,3,4};
二维数组的初始化
int a[3][4]={
{0,1,2,3},
{4,5,6,7},
{8,9,10,11}
}
基于vector容器的二维数组的初始化
方法一:
#include <string.h>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
int N=5, M=6;
vector<vector<int> > obj(N); //定义二维动态数组大小5行
for(int i =0; i< obj.size(); i++)//动态二维数组为5行6列,值全为0
{
obj[i].resize(M);
}
for(int i=0; i< obj.size(); i++)//输出二维动态数组
{
for(int j=0;j<obj[i].size();j++)
{
cout<<obj[i][j]<<" ";
}
cout<<"\n";
}
return 0;
}
方法二:
#include <string.h>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
int N=5, M=6;
vector<vector<int> > obj(N, vector<int>(M)); //定义二维动态数组5行6列
for(int i=0; i< obj.size(); i++)//输出二维动态数组
{
for(int j=0;j<obj[i].size();j++)
{
cout<<obj[i][j]<<" ";
}
cout<<"\n";
}
return 0;
}
输出均为:
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
第一种方法与第二种方法相比,仅能指定行数,不能指定列数。使用vector进行初始化时,默认初始值均为0。
字符串
C++中字符串分两种类型,分别是C风格字符串和C++引入的string类类型
C风格字符串
C风格字符串会在末尾自动添加null字符\0
。
初始化
char s[7]={'Y','U','S','O','N','G','\0'};
等价于
char s[]="YUSONG";
实例:
#include <iostream>
using namespace std;
int main()
{
char s[]={'Y','U','S','O','N','G','\0'};
cout<<s<<endl;
return 0;
}
输出结果为:
YUSONG
C++中的string类
C++中自带了string类,只需引用string库即可使用进行字符串的初始化。
实例:
#include <iostream>
#include <string>
using namespace std;
int main ()
{
string str1 = "runoob";
string str2 = "google";
string str3;
int len ;
// 复制 str1 到 str3
str3 = str1;
cout << "str3 : " << str3 << endl;
// 连接 str1 和 str2
str3 = str1 + str2;
cout << "str1 + str2 : " << str3 << endl;
// 连接后,str3 的总长度
len = str3.size();
cout << "str3.size() : " << len << endl;
return 0;
}
输出结果:
str3 : runoob
str1 + str2 : runoobgoogle
str3.size() : 12