zoukankan      html  css  js  c++  java
  • 猎豹网校C++ Primer学习笔记

    1、头文件(15th课)

    大型项目开发,要有很多头文件。只能写声明,不能定义(类定义和常量定义可以)。

    自己新建头文件(类定义,外部变量声明,函数声明)。源文件包含对应的头文件。

    头文件里写类的声明,源文件里写类的定义,类的所有成员。

    为避免预处理重复拷贝,头文件保护符。防止多重包含。

    2、命名空间(16th)

    注意:头文件里不能使用using声明,用的话直接写全。

     3、标准库string类型(17th)字符容器

     using std::string;

    si种初始化方法:()小括号是调用string对象的构造函数。

    先初始化后再赋值,别这么写。

     

     4、cin读入特点,遇空格暂停

    cin>>name,也可以忽略掉前面的格式,如换行、空格、Tab。

    遇空格暂停,但空格还在输入流里。下一次读取时,再次对前段格式处理,忽略空格。

    改为使用getline(cin,name);

    //在VS中使用cin>>会闪退,原因未知,用getline就正常。

    #include "stdafx.h"
    #include<iostream>
    #include<string>
    using namespace std;
    int main()
    {
        string name;
        cout <<"input sth" << endl;
        //cin>>name;
        getline(cin,name);
        cout << name << endl;
        getchar();
        return 0;
    }

     需要在cin>>后面加上cin.ignore():

    cin>>name;
    cin.ignore();

    5、循环读入

    循环读入,一次读入一行。

    Win+z结束。输入重定向<。

    一次读入一个单词,循环读入。

     6、string类型的操作。.size(),.empty()

    7、字符串拼接操作,+号两边必须有一个是string类型的!

    循环读入并拼接:

    8、string下标操作

     

    循环操作string

    使用C中的函数:但要加上头文件#include<cctype>

    实现忽略标点符号的输出。

    9、vector动态数组、类模板

     #include<vector>;using namespace std;

    可以使用下标索引。.push_back()尾部加数据。

    vector<int> ivec;

    初始为空,不可以通过下标操作添加数据。(1.初始就给长度;2.先cin>>temp,后再push)

    vector<int> ivec(10);

    其下标索引类型与string相似,size_type。

    vector<int>::size_type index=1;

     循环读入数据进vector

    计算首尾两个数之和:

    练习代码,这种循环读入形式需以ctr+Z结束。

    #include "stdafx.h"
    #include<iostream>
    #include<string>
    #include<vector>
    
    using namespace std;
    int main()
    {
        cout<<"Input sth.:"<<endl;
        string str;
        vector<string> ivec;
        while(cin>>str){
            ivec.push_back(str);
        }
        //cin.ignore();
        //ivec.push_back(str);
        cout<<ivec[0]<<endl;
        getchar();
        return 0;
    }

     

     循环读入单词并输出:判断长度要用.size()

    #include "stdafx.h"
    #include<iostream>
    #include<string>
    #include<vector>
    
    using namespace std;
    int main()
    {
        cout<<"Input sth.:"<<endl;
        string str;
        vector<string> ivec;
        while(cin>>str){
            ivec.push_back(str);
        }
    //    for(vector<string>::size_type ix=0;ix!=sizeof(ivec);ix++)
        for(vector<string>::size_type ix=0;ix!=ivec.size();ix++)
        {
            cout<<ivec[ix]<<endl;
        }
        cout<<"sizeof:"<<sizeof(ivec)<<endl;
        cout<<".size():"<<ivec.size()<<endl;
        //cin.ignore();
        //ivec.push_back(str);
        getchar();
        return 0;
    }
    ;
    View Code

     10、iterator迭代器,不用下标遍历

    很多容器没法用下标,但所有容器都有迭代器。

    迭代器实际上是一个指针,通过解引用(*)修改数据和读取数据。

    常迭代器:

     11、四个二进制一组即16进制

    四个一组后,权值向前递次乘16。

    十六进制数,可小写可大写。后面接H或前面加0x。

    一个字节=8位二进制。

    12、bitset<num>处理二进制

    头文件!

    下标计数为倒序,从0开始。

    初始化,可以使用字符串。

    也可以使用键盘输入来初始化:

    .any();判断是否有1

    .none();判断是否全是0

    .count();计数1

    .size()-.count();计数0

    set(index)变成1,reset()把某位变成0,flip()翻转。

    二进制变成十进制:

     13、bitset应用-埃拉托斯特尼_筛法-寻找质数

    先全初始化为1,然后从头开始向后筛选,遇倍数则置0。.count()可以统计质数个数,貌似应该-1。

    然后循环输出即可:

     

    改进1,只筛到根号即可。改进2,从平方处开始筛。

    #include<cmath>

    500万都没问题。

  • 相关阅读:
    多年收集的一些稀有软件1
    Object-C中使用NSKeyedArchiver归档(将各种类型的对象存储到文件中)
    转-- iOS 30多个iOS常用动画,带详细注释
    转-ios设备唯一标识获取策略
    微信授权
    Windows服务Demo
    查询某个时间段在另一个时间段里面的时间
    微服务官方文档链接
    c# html 转word
    Unreal4 入门(配置)
  • 原文地址:https://www.cnblogs.com/wxl845235800/p/11396323.html
Copyright © 2011-2022 走看看