摘要:
swap操作 我们常用的交换两个数据的操作是这样 void swap_int(int &a, int &b) { int temp = a; a = b; b = temp; } 主函数调用是这样的 int a = 100, b = 200; swap_int(a, b); cout << "a i 阅读全文
摘要:
拷贝控制 前文我们介绍了HasPtr类的拷贝控制,实现了行为像值的类,所谓行为像值的类就是我们所说的深拷贝,将一个类对象拷贝给另一个类对象时,其所有的成员都作为副本在新的类对象创建一遍,如果是指针类型的成员,则将指针指向的空间的数据复制一份给新对象,这样两个对象所有的成员都不关联,实现了深拷贝,不会 阅读全文
摘要:
拷贝构造函数 一个类可以不定义拷贝构造函数,系统会默认提供一个拷贝构造函数,叫做合成拷贝构造函数。与默认构造函数不同的是,即使我们定义了其他构造函数,系统也会为我们生成合成拷贝构造函数。合成的拷贝构造函数会将其参数的成员逐个拷贝到正在创建的对象中。编译器从给定对象中依次将每个非static成员拷贝到 阅读全文
摘要:
简介 本篇利用之前介绍的智能指针,关联容器,顺序容器等知识,做一个文本查询程序。该程序读取文本中的内容,然后根据输入的单词,判断该单词出现多少次,出现在哪些行,每行的句子是什么。比如我们输入elment,输出如下 element occurs 112 times (line 36) A set el 阅读全文
摘要:
C语言和标准库提供了两种一次分配一个对象数组的方法。C语言定义了另一种new表达式语法,可以分配并初始化一个对象数组。标准库中包含一个名为allocator的类,允许我们将分配和初始化分离。使用allocator通常会提供更好的性能和更灵活的内存管理能力。 new和数组 为了让new分配一个对象数组 阅读全文
摘要:
unique_ptr unique_ptr和shared_ptr不同,unique_ptr不允许所指向的内容被其他指针共享,所以unique_ptr是不允许拷贝构造和赋值的。 void use_uniqueptr() { //指向double类型的unique指针 unique_ptr<double 阅读全文
摘要:
指针 C++提供了对指针操作的方法,当我们用new开辟指定类型的空间后,就生成了一个指针。 void use_pointer() { //开辟整形指针,指向一个值为5的元素 int *pint = new int(5); //开辟指向字符串的指针 string *pstr = new string( 阅读全文
摘要:
之前我们介绍过顺序容器,list, vector, queue等,这一篇介绍关联容器, C++关联容器主要有两大类,map和set。 map map主要是用来管理key,value类型的结构的。 void use_map() { map<string, size_t> word_count; str 阅读全文
摘要:
最长回文串 字符串abcbada最长的回文串为abcba,最长回文串保证首尾字符相同,并且去除首尾后的子串也是回文串,如bcb。 根据这个规律,ab就不是回文串因为首尾不同。abcbada也不是回文串,因为即使首尾相同,其子串bcbad不是回文串,所以abcbada也不是回文串。 动态规划 可以通过 阅读全文
摘要:
除了容器自定义的迭代器之外,标准库还提供了其他几种迭代器,包括插入迭代器,流迭代器,反向迭代器,移动迭代器。 插入迭代器 迭代器被绑定到一个容器上,可用来向容器插入元素。插入迭代器包括back_inserter, front_inserter, inserter三种。 back_inserter绑定 阅读全文