随笔分类 - C++
摘要:https://www.cnblogs.com/wxhn/p/15417858.html
阅读全文
摘要:#include <iostream> #include <string> #include <vector> using namespace std; int mainssss() { //一个词语在标题出现一次相当于三次,在正文出现一次相当于一次 //top3高频的词。 int topN, pa
阅读全文
摘要:一、vector 只实现标准的顺序表vector容器,不涉及算法和迭代器。 核心思想就是通过new操作得到的动态数组。 new的是容量大小的空间,_size是操作的数量。 类定义如下。 #include <iostream> using namespace std; #define DEFAULT_
阅读全文
摘要:一、左值和右值 右值分为纯右值和将亡值。 纯右值是表达式、返回的临时变量值。 将亡值是右值引用,右值引用指向右值,可以获取的地址就是临时变量的地址。 右值引用使得右值重生,右值变量的声明周期和右值引用变量的一样,只要右值引用变量存在,就能使得右值变量活着。 左值引用指向左值,右值引用指向右值。左值引
阅读全文
摘要:野指针:没有被初始化过的指针。(养成在定义指针后且在使用之前完成初始化的习惯) 悬空指针:指针最初指向的内存已经被释放的指针。(浅拷贝) 内存泄漏:程序动态分配的堆内存由于某种原因无法释放,造成内存的浪费,导致程序运行速度减慢甚至系统崩溃等严重后果。
阅读全文
摘要:智能指针是通过类的构造函数和析构函数来实现对一个指针的管理,避免程序员申请的空间忘记释放,造成内存泄漏情况的发生。主要有auto_ptr/unique_ptr/shared_ptr/weak_ptr; unique_ptr是独占式拥有或严格拥有的,保证同一时间只有一个智能指针可以指向该对象,对于避免
阅读全文
摘要:gcc的编译(ciso) hello.c给gcc-E预处理器生成hello.i;预处理:gcc -E test.c -o test.i 或 gcc -E test.c 经过gcc-S编译器生成hello.s汇编文件;编译:gcc -S test.i -o test.s (编译器只检查程序语法、函数、
阅读全文
摘要:内存对齐,是编译器采用一些对齐规则,把程序的每个数据单元安排在适当的地址。 从平台硬件原因和效率原因两个方面来回答。 首先,不是所有的硬件平台都可以访问任意内存地址上的数据,某些平台只能在一些地址处获取特定类型的数据,否则会抛出硬件异常。为了使得一个程序可以在多个平台上运行,需要进行内存对齐。 第二
阅读全文
摘要:第一种:单线程(懒汉) 第二种:多线程(互斥量实现锁+懒汉) 第三种:多线程(const static+饿汉)(还要继续了解) //单线程解法 //这种解法在多线程的情况下,可能创建多个实例。 class Singleton1 { private: static Singleton1* m_pIns
阅读全文
摘要:使用模板特化来实现模板编程的递归。 #include <iostream> #include <cstdint> template<uint64_t N> struct Fact { enum { Value = N * Fact<N - 1>::Value } ; //enum需要在编译期的时候求
阅读全文
摘要:可以使用迭代器,可以使用auto,可以使用for_each,可以使用下标。 #include <vector> vector<int> v1; v1.push_back(1); v1.push_back(2); v1.push_back(3); v1.push_back(4); //(1)迭代器遍历
阅读全文
摘要:https://www.cnblogs.com/expedition/p/12456109.html 可以读取某个文件夹下面所有文件名称 / 目录名称 #include <string> #include <iostream> #include <vector> #include <direct.h
阅读全文
摘要:>先科普一下C++里面replace()函数的用法 replace函数包含于头文件#include <string>当中,泛型算法replace把队列中与给定值相等的所有值替换成另一个值. 整个队列都被扫描,即此算法的各个版本都在线性时间内执行,其复杂度为O(n)。 replace的执行要遍历由区间
阅读全文
摘要:主要是用C++读写txt文档的基本操作,最简单的写入和读出了两种基本操作 本程序的功能是向text.txt文件写入字符串"this is a text12"和读取字符串"this is a test12" 并且将读取到的字符串存到temp变量(char型变量),且输出到控制台窗口进行显示 注意: 当
阅读全文
摘要:(1)lambda语法[捕获] (参数列表) mutable ->return-type {statement}(2)捕获,是针对参数传入的关键字,它分为传值和引用两种方式。这两种的区别是,引用在参数前面&。参数列表和函数参数列表一样。(3)mutable修饰符,默认情况下lambda是const函
阅读全文
摘要:(1)本程序允许用户在一个给定文件中查询单词,查询结果是单词在文件中出现的次数以及其所在行的列表。如果一个单词在一行中出现多次,此行只列出一次。行会按照升序输出。即,第7行会在第9行之前显示,以此类推。(2)文本查询程序需要完成如下任务:当程序读取输入文件的时候,它必须记住单词出现的每一行。因此,程
阅读全文
摘要:(1)在c++中,动态内存的管理是通过一对运算符来完成的。new,在动态内存中为对象分配空间并返回一个指向该对象的指针,我们可以选择对对象进行初始化。delete,接受一个动态对象的指针,销毁该对象,并释放与之关联的内存。(2)动态内存的使用很容易出问题,因为确保在正确的时间释放内存是极其困难的,有
阅读全文
摘要:(1)向容器中添加元素和从容器中删除元素的操作可能会使指向容器元素的指针、引用或者迭代器失效。一个失效的指针引用或迭代器将不再表示任何元素。使用失效的指针引用迭代器是一种严重的程序设计错误,可能会引起和使用未初始化指针一样问题。(2)在向容器添加元素后,如果容器是vector或string,且存储空
阅读全文
摘要:(1)新标准引入了3个新成员,emplace_front, emplace和emplace_back,这些操作构造而不是拷贝元素,这些操作分别对应push_front,push,push_back,允许我们将元素放置在容器头部,一个指定位置之前,容器尾部。(2)当调用push或insert成员函数时
阅读全文
摘要:(1)顺序容器和关联容器的不同之处在于两者组织元素的方式。这些不同之处直接关系到元素如何存储、访问、添加以及删除。上一节介绍了所有容器都支持的操作,接下来将介绍顺序容器所特有的操作。(2)除了array之外,所有标准库容器都提供了灵活的内存管理。在运行的时候可以动态添加或删除元素来改变容器大小。当我
阅读全文