输出流:
cout<<setiosflags(ios::left|ios::showpoint); // 设左对齐,以一般实数方式显示
cout.precision(5); // 设置除小数点外有五位有效数字
cout<<123.456789<<endl;
cout.width(10); // 设置显示域宽10
cout.fill('*'); // 在显示区域空白处用*填充
cout<<resetiosflags(ios::left); // 清除状态左对齐
cout<<setiosflags(ios::right); // 设置右对齐
cout<<123.456789<<endl;
cout<<setiosflags(ios::left|ios::fixed); // 设左对齐,以固定小数位显示
cout.precision(3); // 设置实数显示三位小数
cout<<999.123456<<endl;
cout<<resetiosflags(ios::left|ios::fixed); //清除状态左对齐和定点格式
cout<<setiosflags(ios::left|ios::scientific); //设置左对齐,以科学技术法显示
cout.precision(3); //设置保留三位小数
//控制cout的显示精度
//1.强制一小数的方式输出
cout << fixed;
//2.控制显示的精度
cout << setprecision(2); //显示小数点后两位 需要iomainip头文件
//设置字符宽度
setw(8); //设置字符宽度为8个
sizeof(double); //测量数据类型的长度
//强制转换
cout << (char)( ' A ' + i );
//数组长度
int nums[] = { } ;
int numsLen = sizeof(nums) / sizeof(int);
//c++变量声明初始化可以去等号(11标准)
string stuNames[ ] {" 张三“, ”李四“, ”王五“};
向量容器vector:
向量(Vector)是一个封装了动态大小数组的顺序容器(Sequence Container)。
跟任意其它类型容器一样,它能够存放各种类型的对象。
可以简单的认为,向量是一个能够存放任意类型的动态数组。
//定义和初始化
vector<double> vect1;
vector<string> vect2(5);
vector<int> vect3(20,1); //数组的二十个元素都是1
//集合的通用遍历方法,使用迭代器iterator
vector<double>::iterator it; //得到迭代器对象(指针对象)
//it.begin , 返回容器首尾元素的迭代器
//从第一个元素开始迭代
for( it = vecDouble.begin(); it != vecDouble.end(); ++it) //it++ 运算符重载
{ cout << *it << endl; }
// #include<algorithm> 算法文件
sort(vecDouble.begin(), vecDouble.end()); //sort() 排序函数
reverse(vecDouble.begin(), vecDouble.end()); //reverse()逆序排序函数
-----------------------------------------------------------4.4(分割线,缅怀逝者)-------------------------------------------------------------------------
指针:
1. int* p的写法偏向于地址,即p是一个地址变量,表示一个十六进制的地址;
2.int *p的写法偏向于值,*p是一个整型变量,能够表示一个整型值;(p还是表示地址)
char ch = 'a'; //char* ch = “秋风萧瑟”; 定义字符串方法
char* ptr_ch = &ch;
cout<< (void *)ptr_ch<<endl; //如此才能正常输出ch地址
----------------------------------------------------------4.6(分割线)----------------------------------------------------------------------------------------
动态分配内存:
int * ptr_int = new int; //在运行阶段分配未命名内存;
delete ptr_int; //释放由new分配的内存;
int * ptr_array = new int[10]; //创建动态分配的数组
delete [] ptr_array; //释放内存 (注意别重复释放同一内存)
栈区(stack):由编译器自动分配释放,一般存放函数的参数值,局部变量等;
堆区(heap):一般由程序员分配释放,如果程序未释放,程序结束后可能由操作系统回收;(分配方式类似链表)
全局区(静态区static):全局变量和静态变量存储在一起的,有系统释放;
文字常量区:常量字符串存放在此,由系统释放;
程序代码区:存放函数体的二进制代码;
#include<iostream>
#include<stdlib.h>
#include<cstdio>
#include<algorithm>
using namespace std;
int numOne = 0; //全局初始化区
int *numTwo ; //全局未初始化
int main(){
//栈区
int numThr;
//文字常量区
string str = "hello world";
//栈区,字符串在常量区
char str1[] = "hello";
//栈区
char* ptr1;
//全局静态初始化区
static int numQ = 1024;
//分配的内存在堆区
ptr1 = new char[10];
delete ptr1;
return 0;
}
-------------------------------------------------------------(4.9分割线)--------------------------------------------------------------------------------------------
指针创建二维数组:
int (*ptr)[3] = new int[5][3];
每一个指针对应一个一位数组,空间为3;
int main(){
int *p = new int[10];
//指针创建二维数组
int (*ptr)[3] = new int[5][3];
ptr[3][2] = 1;
for(int i=0; i<5; i++){
for(int j=0; j<3; j++){
cout << *(*(ptr+i) + j) << ',';
}
cout << endl;
}
}
STL:
------------------------------------4.24(分割线)--------------------------
求二维数组的行和列
int col = (int)array[0].size();
int row = (int)array.size();