博客
关于我
C++学习笔记十
阅读量:304 次
发布时间:2019-03-01

本文共 1306 字,大约阅读时间需要 4 分钟。

C++学习笔记十:const与容器操作

作为一名开发者,我最近在学习C++,每天都会记录自己的学习笔记。今天想整理一下最近的学习内容,希望能帮助自己更好地理解这些概念。


const关键字

在C++中,const是一个非常重要的关键字,用于定义常量或常引用。了解它的使用方式对于编写高效代码至关重要。

定义常量

const用于定义常量,它可以应用在数据成员、指针以及引用上。例如:

  • const char * a:指向的变量不可修改值,但指针值可以改变。
  • char * const a:指针不可改变值(常指针),但指向的变量值可以变。
  • const char * const a:常指针和常变量。

需要注意的是,常指针必须进行初始化,否则会导致指针常出错。

引用与效率

const T & a:引用可以提高函数调用效率,因为它避免了对象复制操作。引用不仅仅是变量的地址,它还可以用于函数参数传递。

类中的const规则

在类中使用const需要遵守以下几点:

  • 数据成员

    • 初始化方式有多种:
      • 定义时直接初始化:const int dataMember = 1;
      • 在构造函数中使用初始化列表:Test::Test(i): dataMember(i) {}
      • 在实现文件中初始化:const int Test::dataMember = 1;
    • 如果成员是静态的,可以直接在定义时初始化:static const int dataMember = 10;
  • 成员函数

    • const成员函数是指在函数参数列表后面,大括号前加上const关键字的函数。
    • 何时使用const成员函数:只有不会修改数据成员的函数才能声明为const类型。
    • const对象的行为:const对象只能访问const成员函数,默认调用const成员函数。
    • const成员函数的限制:不能调用非const成员函数。

  • 顺序容器之关系操作符

    在C++中,顺序容器(如vectorlist)都支持使用关系操作符进行比较。关系操作符的结果取决于元素类型定义的关系操作符。如果元素类型没有定义对应的关系操作符,则容器不能进行该类型的比较。

    例如:

    • a == b:如果ab是两个顺序容器,比较它们的元素,直到找出第一个不相等的元素。
    • 如果某个元素类型没有定义==操作符,那么两个这样的容器无法进行比较。

    容器大小操作

    了解容器的大小操作对于管理容器内元素非常重要。C++提供了以下几个函数来操作容器的大小:

  • size():返回容器中元素的数量。
  • max_size():返回容器最多可以容纳的元素数量。
  • empty():判断容器是否为空。
  • resize(n):调整容器大小,使其能容纳n个元素。若n大于当前大小,会添加新元素;若小于,会删除多余元素。
  • resize(n, t):类似resize(n),但新元素初始化为t
  • 需要注意的是,resize操作可能会使得迭代器失效,因此在迭代时需要谨慎处理。


    通过学习这些概念,我对C++的理解有了进一步的加深。虽然const和容器操作看似简单,但它们在实际开发中起到至关重要的作用。希望这些笔记能帮助我更好地掌握C++编程!

    转载地址:http://lfao.baihongyu.com/

    你可能感兴趣的文章
    NUC1077 Humble Numbers【数学计算+打表】
    查看>>
    NuGet Gallery 开源项目快速入门指南
    查看>>
    NuGet(微软.NET开发平台的软件包管理工具)在VisualStudio中的安装的使用
    查看>>
    nuget.org 无法加载源 https://api.nuget.org/v3/index.json 的服务索引
    查看>>
    Nuget~管理自己的包包
    查看>>
    NuGet学习笔记001---了解使用NuGet给net快速获取引用
    查看>>
    nullnullHuge Pages
    查看>>
    NullPointerException Cannot invoke setSkipOutputConversion(boolean) because functionToInvoke is null
    查看>>
    null可以转换成任意非基本类型(int/short/long/float/boolean/byte/double/char以外)
    查看>>
    Numix Core 开源项目教程
    查看>>
    numpy
    查看>>
    NumPy 库详细介绍-ChatGPT4o作答
    查看>>
    NumPy 或 Pandas:将数组类型保持为整数,同时具有 NaN 值
    查看>>
    numpy 或 scipy 有哪些可能的计算可以返回 NaN?
    查看>>
    numpy 数组 dtype 在 Windows 10 64 位机器中默认为 int32
    查看>>
    numpy 数组与矩阵的乘法理解
    查看>>
    NumPy 数组拼接方法-ChatGPT4o作答
    查看>>
    numpy 用法
    查看>>
    Numpy 科学计算库详解
    查看>>
    Numpy.fft.fft和numpy.fft.fftfreq有什么不同
    查看>>