• 编程中常遇到的细节问题


    1、输入输出
    #include<iostream>
    using namespace std;
    int n;
    cin>>n;
    cout<< n<<endl;

    字符串
    注意:cin提取始终将空格(空格,制表符,换行符...)视为终止要提取的值,因此提取字符串意味着始终提取单个单词,而不是短语或整个句子。
    cin>>s

    整行字符串输入使用getline()
    string s;
    while(getline(cin, s)) {

    }

    字符串流
    #include<sstream>
    stringstream

    格式化输出
    包含头文件 : #include<iomanip>
    cout<<setiosflags(ios::fixed)<<setprecision(2);合在一起的意思就是输出一个右对齐的小数点后两位的浮点数。

    1) 使用setprecision(n)可控制输出流显示浮点数的数字个数 C++默认的流输出数值有效位是6。setprecision(n)就是输出n个数,会有四舍五入。
    2) setiosflags(ios::fixed)
    setprecision(n)与setiosflags(ios::fixed)合用,可以控制小数点右边的数字个数。

    eg:
    #include<iostream>
    #include<iomanip>
    #include<cmath>
    using namespace std;
    int main() {
    double s=20.7843000;
    cout << s << endl;
    cout << setiosflags( ios::fixed );
    cout << "setprecision( 1 )"<< setprecision( 1 )<< s << endl;
    cout << "setprecision( 2 )"<< setprecision( 2 )<< s << endl;
    cout << "setprecision( 3 )"<< setprecision( 3 )<< s << endl;
    cout << "setprecision( 4 )"<< setprecision( 4 )<< s << endl;
    cout << "setprecision( 5 )"<< setprecision( 5 )<< s << endl;
    cout << "setprecision( 6 )"<< setprecision( 6 )<< s << endl;
    cout << "setprecision( 7 )"<< setprecision( 7 )<< s << endl;
    cout << "setprecision( 8 )"<< setprecision( 8 )<< s << endl;
    return 0;

    }

    输出:

    20.7843
    setprecision( 1 )20.8
    setprecision( 2 )20.78
    setprecision( 3 )20.784


    2、将整数转换为字符串
    int n;
    string s = to_string(n);

    3、substr用法

    假设:string s = “0123456789”;
    string sub1 = s.substr(5); //只有一个数字5表示从下标为5开始一直到结尾:sub1 = “56789”
    string sub2 = s.substr(5, 3); //从下标为5开始截取长度为3位:sub2 = “567”


    4、定义动态二维数组dp[m][n]
    1) 使用vector
    vector<vector<int> > dp(m, vector<int>(n)); //默认初始化为0
    vector<vector<int> > dp(m, vector<int>(n, 1)); //全部初始化为1

    5、使用指针

    //申请空间
    int ** p=new int *[rows];
    for(int i=0; i<rows; i++) {
         p[i]=new int[columns];
    }

    //释放空间
    for(int i=0; i<rows; i++) {
        delete [] p[i];
    }
    delete [] p;

    6、指针初始化
    int *pia = new int[10]; // 每个元素都没有初始化
    int *pia2 = new int[10] (); // 每个元素初始化为0

    7、
    sqrt使用时大多需要要强制类型转化,因为sqrt只支持double和float类型
    c=(int) sqrt((double)a*a+b*b);或者c=(int) sqrt((float)a*a+b*b);

    8、遇到字符串相关问题可以考虑哈希表
    字符串中出现的字符的 ASCII 码在 0 到 127 之间


    9、最大最小值表示
    #define INT_MAX 0x7fffffff
    #define INT_MIN 0x80000000


    10、创建pair对
    queue<pair<int , int>>q;
    q.push({i,j});
    q.push(make_pair(i,j));
    创建pair对,这两种写法 {i, j} 和 make_pair(i,j) 都可以

  • 相关阅读:
    php 之 没有mysql支持时的替代方案
    在php中使用sockets:从新闻组中获取文章
    PHP ON 阿里云的环境配置攻略
    java基础2
    java基础1
    连接查询(内连接)
    mysql数据约束
    mysql表中数据的增删改查2
    mysql表中数据的增删改查
    mysql表的增查改删
  • 原文地址:https://www.cnblogs.com/sunshine1218/p/12507291.html
Copyright © 2020-2023  润新知