16.12 — std::vector<bool>
在课程中,我们讨论了 std::bitset 如何能够将 8 个布尔值压缩到一个字节中。然后可以通过 std::bitset 的成员函数修改这些位。std::vector 有一个有趣的技巧。std::vector<bool> 有一个特殊的实现,可能会更节省空间……
在课程中,我们讨论了 std::bitset 如何能够将 8 个布尔值压缩到一个字节中。然后可以通过 std::bitset 的成员函数修改这些位。std::vector 有一个有趣的技巧。std::vector<bool> 有一个特殊的实现,可能会更节省空间……
考虑这样一种情况:您正在编写一个程序,用户将在其中输入一个值列表(例如一堆考试分数)。在这种情况下,他们将输入的值的数量在编译时是未知的,并且每次运行都可能有所不同……
数组的一个更大的文档问题是整数索引没有向程序员提供有关索引含义的任何信息。考虑一个保存 5 个考试分数的数组:#include <vector> int main() { std::vector testScores { 78, 94, 66, 77, 14 }; testScores[2] = 76; …
在课程中,我们注意到我们通常更喜欢使用有符号值来存储数量,因为无符号值的行为可能出乎意料。然而,在课程中,我们讨论了 std::vector(和其他容器类)如何使用无符号整数类型 std::size_t 作为长度和索引。这可能导致问题……
在前面的课程中,我们介绍了运算符 [],它可以用于对数组进行下标以访问元素。在本课程中,我们将介绍其他访问数组元素的方法,以及获取容器类长度(元素数量)的几种不同方法……
std::vector 类型的对象可以像任何其他对象一样传递给函数。这意味着如果我们按值传递 std::vector,将会进行昂贵的复制。因此,我们通常通过 (const) 引用传递 std::vector 以避免此类复制。对于 std::vector,元素类型是……
可变可扩展性挑战 考虑这样一个场景:我们想记录 30 名学生的考试分数并计算班级的平均分数。为此,我们需要 30 个变量。我们可以这样定义它们:// 分配 30 个整数变量(每个变量名称不同)int……
章节回顾 在每个(非静态)成员函数内部,关键字是一个 const 指针,它保存当前隐式对象的地址。我们可以让函数通过引用返回 *this,以启用链式调用,其中可以在单个表达式中对同一个对象调用多个成员函数。……
友元类 友元类是可以访问另一个类的私有和保护成员的类。这是一个例子:#include <iostream> class Storage { private: int m_nValue {}; double m_dValue {}; public: Storage(int nValue, double dValue) : m_nValue { nValue }, m_dValue { dValue } { …
在课程中,我们研究了函数模板:template <typename T> // 这是模板参数声明 T max(T x, T y) // 这是 max<T> 的函数模板定义 { return (x < y) ? y : x; } 使用函数模板,我们可以……