IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> C++复习笔记2 -- 字符串/向量和数组 -> 正文阅读

[C++知识库]C++复习笔记2 -- 字符串/向量和数组

C++复习笔记 – 字符串/向量和数组


字符串/向量和数组

  1. 命名空间

    使用命名空间的目的是对标识符的名称进行本地化,避免命名冲突。

    namespace关键字使得可以通过创建作用范围来对全局命名空间进行分隔。从本质上讲,一个命名空间定义一个范围。

    基本形式:namespace <名称> {//声明}

    在命名空间之外需要使用范围解析运算符引用命名空间中的对象。

    多次引用命名空间中的成员,就用using

    基本格式:

    using namespace 命名空间名称

    using 命名空间名称::成员

    没有名称的命名空间,只有在声明他的文件中可见,直接使用成员,其他文件不可见。把全局名称的作用域限制在声明他的文件中的一种方式是将其声明为静态的,更好的方式是使用未命名的命名空间。

  2. 标准库类型string(包括字符集的处理/locale使用)

    #include <string>
    using std::string
    

    字符串的输入

    单个单词使用std::cin,读取并忽略开头全部的空白字符(空格/换行符/制表符),读取字符直到再次遇到空白字符。

    多个单词使用std::getline(std::cin, s)

    std::string line;
    while(std::getline(std::cin, line)) {
      std::cout << line << std::endl;
    }
    

    getline函数接受两个参数:输入流对象/string对象。getline不忽略开头换行符,如果开头遇到换行符,返回空串。

    字符串的操作

    构造函数

    复制操作

    empty()

    size()/capacity()/length()

    append(str)/…

    insert(pos, str)/…

    erase(pos, n)/erase(pos)/erase(first, last)

    replace(pos, n, s1)

    assign(str) //拷贝str

    substr(pos, n)

    find(str, pos)/…

    compare(str)

    c_str()


    locale类是系统区域设置/国家或地区设置,决定程序所使用的当前语言编码/日期格式/数字格式等。locale设置将影响程序的字符串处理c++ locale使用std::locale::global(std::locale(""))初始化。

  3. 标准库类型vector

    同一种类型的对象的集合/容器,每个对象都有一个索引值(类似数组)。

    存放的对象的类型放在类模板名称后面的尖括号来声明。

    初始化

    vector<T> v1; //类型为空,默认构造函数为空

    vector<T> v2(v1); //拷贝

    vector<T> v3(n, i); //v3包含n个值为i的元素

    vector<T> v4(n); //v4含有n个使用默认构造函数的元素

    操作

    empty()

    size()

    push_back()

  4. 迭代器

    迭代器是容器和算法之间的中介。

    正向迭代器 容器类名::iterator 迭代器名;

    常量正向迭代器 容器类名::const_iterator 迭代器名;

    反向迭代器 容器类名::reverse_iterator 迭代器名;

    常量反向迭代器 容器类名::const_reverse_iterator 迭代器名;


    容器种类和功能:

    容器种类功能
    序列容器vector向量容器/list列表容器/deque双端队列容器。容器中的元素是不排序的。
    排序容器set集合容器/multiset多冲击和容器/map映射容器/multimap多重映射容器,容器中的元素是有序的,插入元素会放到适当的位置。
    哈希容器from c++11:unordered_set哈希集合/unordered_multiset哈希多重集合/unordered_map哈希映射/unordered_multimap哈希多重映射,未排序,元素的位置由哈希函数决定。

    用法:迭代器读取它指向的元素,*迭代器名表示迭代器指向的元素。通过非常量迭代器能修改指向的元素。(类似指针)

    std::vector<int> v(n); // int n = 10;
    std::vector<int>::iterator i;
    for(i = v.begin(); i != v.end(); i++) {
      std::cout << *i << std::endl;
    }
    
  5. 数组和多维数组

    不存在引用的数组,但存在数组的引用。

    int & arr[10]; //引用的数组,相当(int &) arr[10],表示arr是一个数组,其中的元素是引用
    int (& arr)[10]; //数组的引用,arr是引用,引用的对象是数组
    

    note:为什么引用的数组不合法?

    第一,引用必须初始化,引用本意是不含内存空间的,而且引用数组是直接拿另外一个数组初始化引用,但是数组不具备拷贝功能,所以引用数组不能初始化。可以使用指针来解决。

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-10-01 16:38:20  更:2021-10-01 16:40:04 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 0:07:33-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码