1.double型保留两位小数
#include<iomanip>
cout.setf(ios::fixed);
cout<<setprecision(2)<<ss<<endl;
2.vector
(1)头文件#include<vector>.
(2)创建vector对象,vector<int> vec;
(3)尾部插入数字:vec.push_back(a);
(4)使用下标访问元素,cout<<vec[0]<<endl;记住下标是从0开始的。
(5)使用迭代器访问元素.
vector<int>::iterator it; for(it=vec.begin();it!=vec.end();it++) cout<<*it<<endl;
(6)插入元素: vec.insert(vec.begin()+i,a);在第i+1个元素前面插入a;
(7)删除元素: vec.erase(vec.begin()+2);删除第3个元素
vec.erase(vec.begin()+i,vec.end()+j);删除区间[i,j-1];区间从0开始
(8)向量大小:vec.size();
(9)清空:vec.clear();
3.数组初始化
int a[100]; 这个数组a是不能用delete释放空间的,因为这个数组a在声明时就已经说明了空间的大小,在最后程序会自动释放这个空间。 int *b; b=new int[100]; 这个要在最后用delete []b; 语句来动态释放,因为数组b是一个动态数组,数组空间是动态分配的,程序是不能自动释放的,所以要自己用delete来释放。二维数组
double
** pArray =
new
double
* [row];
for
(
int
i = 0; i < row; ++i)
pArray[i] =
new
double
[column];
for
(
int
i = 0; i < row; ++i)
delete
[]pArray[i];
delete
[]pArray;
一 数组
1. 声明2维数组时,第一维长度可以不指定
e.g. int a[][4]={0,1,2,3,4,5,6,7,8,9,10,11};//legal
2. 二维数组按行存储
3. 用数组名作函数参数
3.1 一维数组名作为函数参数
数组名代表数组首元素的地址,并不代表数组中的全部元素。因此用数组名作函数参数时,是将实参数组首元素的地址传递给形参。
形参可以是数组名,也可以是指针变量
调用函数时,将实参数组首元素的地址传递给形参数组名。这样,实参数组和形参数组共占同一段内存单元。形参数组中各元素的值如果发生变化就意味着实参数组元素的值发生变化。
4字符数组的赋值与引用
4.1 字符数组的赋值与引用
只能对字符数组的元素赋值,而不能用赋值语句对整个数组赋值。
4.2 字符串和字符串结束标志
char str[12]={'I',' ','a','m',' ','h','a','p','p','y'};
字符串str只有10个字符,所以系统会对字符数组最后两位自动填补’’,这是“字符串结束标志”。在上面的数组中,第11个字符为’’,就表明字符串的有效字符为其前面的10个字符。也就是说,遇到字符’’就表示字符串就此结束。
对一个字符串常量,系统会自动在所有字符的后面加一个’’作为结束符。例如字符串”I am happy”共有10个字符,但内存中它共占11个字节,最后一个字节’’是系统自动加上的。
在程序中往往依靠检测’’的位置来判定字符串是否结束,而不是根据数组的长度来决定字符串长度。
5 返回数组的函数
要想实现函数返回一个数组,那返回对应数组里面类型的指针
int* someFunction( ); //Legal
int* doubler( int a[], int size)
{
int* temp = new int[size];
for ( int i =0; i < size; i++)
temp[i] = 2*a[i];
return temp;
}
调用
int a[] = {1, 2, 3, 4, 5};
int* b;
b = doubler(a, 5);
delete[] b
二.string类型
1.开头必须加入
#include <string> using std::string;
2.输入读取(string s ;cin<<s;)忽略开头的空格 读取到下个空格即结束
3.可使用操作符 +,==,!=,+=,<,>
4.s.empty()判断是否为空