C++ 碎片知识点

输出流:

    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();

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值