- 博客(82)
- 收藏
- 关注
翻译 Ubuntu更新cmake超过apt版本限制
参考链接1.使用APT库#1卸载老版cmakesudo apt remove --purge --auto-remove cmakesudo apt purge --auto-remove cmake#2获取密钥wget -O - https://apt.kitware.com/keys/kitware-archive-latest.asc 2>/dev/null | gpg --dearmor - | sudo tee /etc/apt/trusted.gpg.d/kitware.gp
2022-02-05 12:37:25
373
原创 2020-11-23 安装kaldi提示CUDA版本与实际安装版本不符
安装kaldi提示CUDA版本与实际安装版本不符在kaldi的src文件夹下运行./configure --shared提示:***configure failed: CUDA 9_1 does not support g++ (g++-7). You need g++ < 7.0. ***而我在实际安装的版本是10_1:nvcc: NVIDIA (R) Cuda compiler driverCopyright (c) 2005-2019 NVID
2020-11-23 20:06:51
1067
2
原创 win10系统笔记本(UEFI引导+GPT磁盘+NVIDIA独显)安装ubuntu18.04双系统教程
安装教程1.win10操作1.1磁盘管理分配空间1.2设置2.制作U盘启动盘3.安装过程3.1修改设置3.1.1BIOS修改3.1.2修改grub3.2 安装步骤关键选择3.2.1安装类型选择3.2.2空闲磁盘分区3.2.3启动引导器设置3.3安装后NVIDIA显卡相关操作3.3.1卸载系统里低版本的NVIDIA驱动3.3.2 把显卡驱动加入PPA3.3.3查找NVIDIA显卡驱动最新版本号3.3.4使用终端命令查看Ubuntu推荐的驱动版本3.3.5 安装合适驱动3.3.6重启并查看NVIDIA版本3.3
2020-10-06 16:15:27
1221
原创 无root权限,ubuntu离线安装subversion教程
首先,下载subversion官方最新安装包,我这是subversion-1.12.2.tar.gz.然后解压、配置、编译、安装tar -zxvf subversion-1.12.2.tar.gzcd subversion-1.12.2./configure 此时提示我没有安装apr和apr-util,然后去官网下载apr和apr-util安装包,我的是apr-1.7.0.tar...
2019-08-30 15:03:12
1314
转载 算法_在一个数组中,一个数出现p次(p>=1 && p%k!=0),其他数出现k次(k>1),求出现p次的数
1.数组元素只有1bit进行求解: 1.令m满足,构建m个1bit宽的计数器,其中为1bit单元。carry为进位到当前位的值。进位 计算后 0 0 0 0 1 1 1 0 1 1 1 0 所以有: ...
2019-04-18 14:33:11
703
原创 算法_KMP算法学习笔记
KMP算法是一种改进的字符串匹配算法,由D.E.Knuth,J.H.Morris和V.R.Pratt同时发现,因此人们称它为Knuth——Morris——Pratt操作(简称KMP算法)。KMP算法的关键是利用匹配失败后的信息,尽量减少模式串P(长度为m)与主串T(长度为n)的匹配次数以达到快速匹配的目的。具体实现就是实现一个next()函数,函数本身包含了模式串的局部匹配信息。时间复杂度为O(m...
2019-02-25 18:04:37
318
2
原创 C++Primer_Chap19_特殊工具与技术_List8_固有的不可抑制的特性_笔记
为了支持底层编程,C++定义了一些固定的不可移植(nonportable)的特性。即因机器而异的特性位域 类可以将其(非静态)数据成员定义为位域(bit-field),在一个位域中含有一定数量的二进制位。位域在内存中的布局是与机器相关的。 位域的类型必须是整型或者枚举类型。通常采用无符号类型保存一个位域。位域的声明形式是在成员名字之后竟跟一个冒号以及一个常量表达式,该表达式用于...
2018-11-14 15:51:22
200
原创 C++Primer_Chap19_特殊工具与技术_List567_嵌套类、union、局部类_笔记
5 嵌套类 一个类定义在另一个类的内部,前者称为嵌套类(nested class)或嵌套类型(nested type)。嵌套类常用于定义作为实现部分的类。class TextQuery {public: class QueryResult; };class TextQuery::QuertResult { friend std::ostream& ...
2018-11-14 15:13:57
229
原创 C++Primer_Chap19_特殊工具与技术_笔记
1 控制内存分配1.1 重载new和delete 应用程序可以在全局作用域中定义operator new函数和operator delete函数,也可以将它们定义为成员函数。当编译器发现一条new表达式或delete表达式后,如果被操作的对象是类类型,则编译器首先在类及其基类的作用域中查找,不存在则在全局作用域中查找匹配的函数。可以使用作用域运算符令new表达式和delete表达式忽...
2018-11-14 15:13:25
254
原创 C++Primer_Chap19_特殊工具与技术_List04_类成员指针_笔记
成员指针(pointer to member)是指可以指向类的非静态成员的指针。4.1 数据成员指针const string Screen::*pdata = &Screen::contents;class Screen {public: static const std::string Screen::*data() { return &Scr...
2018-11-14 15:11:15
262
原创 C++Primer_Chap18_用于大型程序的工具_List03_多重继承和虚继承_笔记
满足在大规模应用程序的对比较复杂的应用概念建模的能力的特殊要求。 多重继承(multiple inheritance)是指从多个直接基类中产生派生类的能力。多重继承的派生类继承了所有父类的属性。存在多个基类相互交织产生的细节可能会带来的错综复杂的设计问题和实现问题。多重继承 在给定的派生列表中,同一基类只能出现一次。class Bear : public ZooAnimal ...
2018-11-12 19:05:15
230
原创 C++Primer_Chap18_用于大型程序的工具_List02_命名空间_笔记
满足在大规模应用程序的在在使用各种库(可能包含独立开发的库)进行协同开发的能力的特殊要求。命名空间(namespace)为防止名字冲突提供了可控的机制。命名空间分割了全局命名空间,其中每个命名空间是一个作用域。通过在某个命名空间中定义库的名字,库的作者(用户)可以避免全局名字固有的限制。命名空间定义 命名空间的定义包含两个部分:首先是关键字namespace,随后是命名空间的名字。在...
2018-11-12 19:04:53
187
原创 C++Primer_Chap18_用于大型程序的工具_List01_异常处理_笔记
满足在大规模应用程序的在独立开发的子系统之间协同处理错误的能力的特殊要求。 异常处理(exception handling)机制允许程序中独立开发的部分能够在运行时就出现的问题进行通信兵做出相应的处理。异常使得我们能够将问题的检测和解决过程分离开来。程序的一部分负责检测问题的出现,然后解决该问题的任务传递给程序的另一部分。抛出异常 在C++中,我们通过抛出(throw)一条表达式来...
2018-11-12 19:04:34
166
原创 C++Primer_Chap17_标准库特殊设施_List05_IO库再探_笔记
格式化输入与输出 除了条件状态外,每个iostream对象还维护了一个格式状态来控制IO如何格式化的细节,如整型值是几进制、浮点值的精度、一个输出元素的宽度等。 标准库定义了一组操作符(manipulator)来改变流的格式状态,一个操作符是一个函数或是一个对象,会影响流的状态,并能用做输入或输出运算符的运算对象。类似输入和输出运算符,操作符也返回它所处理的流对象,因此我们可以在一条语...
2018-11-12 13:53:08
205
原创 C++Primer_Chap17_标准库特殊设施_List04_随机数_笔记
C和C++在老版本都依赖一个简单的C库函数rand生成随机数。rand函数生成均匀分布的伪随机整数,每个随机数的范围在0和一个系统相关的最大值之间。#include <random> 定义在头文件random中的随机数库通过一组协作的类来解决非随机性的问题:随机数引擎(random-number enginers)和随机数分布类(random-number distri...
2018-11-12 13:50:45
207
原创 C++Primer_Chap17_标准库特殊设施_List03_正则表达式_笔记
正则表达式(regular expression)是一种描述字符序列的方法,是一种及其强大的计算工具。C++正则表达式库(RE库)定义在头文件regex中,包含多个组件:正则表达式库组件 regex 表示有一个正则表达式的类,即regex类表示一个正则表达式 regex_match 将一个字符序列与一个正则表达式匹配 regex_search 寻求第一个与正则表...
2018-11-10 22:18:04
738
原创 C++Primer_Chap17_标准库特殊设施_List02_bitset类型_笔记
定义在头文件bitset中的bitset类使位运算的使用更为容器,并且能够处理超过最长整型类型大小的位集合。#include <bitset>定义和初始化bitset 当我们定义一个bitset时,需要声明它包含多少个二进制位。bitset<32> bitvec(1U); //32位;低位为1,其他位为0 二进制位的位置是从0开始编号的...
2018-11-10 17:47:36
214
原创 C++Primer_Chap17_标准库特殊设施_List01_tuple类型_笔记
tuple是类似pair的模板。不同tuple类型的成员类型可以不同,但一个tuple可以有任一数量的成员。每个确定的tuple类型的成员数目是固定的。但一个tuple类型的成员数目可以与另一个tuple类型不同。 当我们希望将一些数据组合成单一对象,但又不想麻烦地定义一个新数据结构来表示这些数据时,tuple是非常有用的:#include <tuple>tuple...
2018-11-09 16:50:34
173
原创 C++Primer_Chap16_模板和泛型编程_List05_模板特例化_笔记
编写单一模板,使之对任何可能的模板实参都是最合适的,都能实例化,这并不总是能办到的。当我们不能(或不希望)使用模板版本时,可以定义类或函数模板的一个特例化版本。定义函数模板特例化 当我们特例化一个函数模板时,必须为原模板中的每个模板参数都提供实参。为了指出我们正在实例化一个模板,应使用关键字template后跟一个空尖括号对(<>)template<typen...
2018-11-09 16:02:56
188
原创 C++Primer_Chap16_模板和泛型编程_List04_可变参数模板_笔记
一个可变参数模板(variable template)就是一个接受可变数目参数的模板函数或模板类。可变数目的参数被称为参数包(parameter packet)。存在两种参数宝:模板参数包(template parameter packet),表示0个或多个模板参数 函数参数包(function parameter packet),表示0个或多个函数参数。 我们用一个省略号来指出一个...
2018-11-09 11:11:34
164
原创 C++Primer_Chap16_模板和泛型编程_List03_重载和模板_笔记
函数模板可以被另一个模板或普通非模板函数重载。与往常一样,名字相同的函数必须具有不同数量和类型的参数。涉及函数模板,函数匹配规则会在以下几方面受到影响:对于一个调用,其候选函数包括所有模板实参推断成功的函数模板实例 候选的函数模板总是可行的,因为模板实参推断会排除任何不可行的模板 可行函数(模板和非模板)按类型转换来排序。当然,可以用于函数模板调用的类型转换是非常有限的 如果一个函数...
2018-11-08 11:58:43
191
原创 C++Primer_Chap16_模板和泛型编程_List02_模板实参推断_笔记
从函数实参类确定模板实参的过程称为模板实参推断(template argument deduction)。类型转换和模板类型参数 如果一个函数形参的类型使用了模板类型参数,那么它采用特殊的初始化规则。只有很有限的几种类型转换会自动应用于这些实参。编译器通常不是对实参进行类型转换,而是生成一个新的模板实例。能在调用中应用于函数模板的包括如下两项:const转换:可以将一个非cons...
2018-11-04 15:11:29
230
原创 C++Primer_Chap16_模板和泛型编程_List01_定义模板_笔记
面向对象变成(OOP)和泛型编程都能处理在编写程序时不知道类型的情况。不同之处在于:OOP能处理类型在程序运行之前都未知的情况 泛型编程中,在编译时就能获知类型。函数模板 我们可以定义一个通用的函数模板(function template),一个函数模板就是一个公式,可生成针对特定类型的函数版本template <typename T>int compare(...
2018-11-02 19:10:48
206
原创 C++Primer_Chap15_面向对象程序设计_List08_容器和继承_笔记
当我们使用容器存放继承体系中的对象时,通常必须采用间接存储的方式。因为不允许在容器中保存不同类型的元素,所以不能把具有继承关系的多种类型的对象之间存放在容器中。在容器中放置(智能)指针而非对象vector<shared_ptr<Quote>> basket;basket.push_back( make_shared<Quote>("0-201-...
2018-11-02 16:47:44
211
原创 C++Primer_Chap15_面向对象程序设计_List07_构造函数与拷贝控制_笔记
虚析构函数 虚析构函数由于动态绑定可以确保delete基类指针时将运行正确的析构函数版本。一般,如果一个类需要析构函数,那么它同样需要拷贝和赋值操作。但基类的析构函数不遵循上述准则,是一个重要的例外。 虚析构函数将组织合成移动操作。如果一个类定义了析构函数,即使它通过=default的形式使用了合成版本,编译器也不会为这个类合成移动操作。(如果我们不声明自己的拷贝构造函数或拷贝赋值...
2018-11-01 14:57:01
146
原创 C++Primer_Chap15_面向对象程序设计_List03_04_05_06_笔记
虚函数 由于当使用基类的引用或指针调用一个虚成员函数时会执行动态绑定。因为直到运行时才知道到底调用了哪个版本的虚函数,所以所有虚函数都必须有定义。 动态绑定只有当我们通过指针或引用调用虚函数才会发生。如果我们通过一个具有普通类型(非引用非指针)的表达式调用虚函数时,在编译时就会将调用的版本确定下来。 一旦某个函数被声明成虚函数,则在所有派生类中它都是虚函数。一个派生类的函数如果...
2018-10-30 21:46:03
171
原创 C++Primer_Chap15_面向对象程序设计_List02_定义基类和派生类_笔记
class Quote{public: Quote() = default; Quote(const std::string &book, double sales_price): bookNo(book), price(sales_price){} std::string isbn() const { return bookNo;} virtual do...
2018-10-30 21:29:46
264
原创 C++Primer_Chap15_面向对象程序设计_List01_OOP:概述_笔记
面向对象程序设计(object-oriented programming)的核心思想是数据抽象、继承和动态绑定。 使用数据抽象,可以将类的接口与实现分离 使用继承,可以定义相似的类型并对其相似关系建模 使用动态绑定,可以一定程度上忽略相似类型的区别,而以统一的方式使用它们的对象。继承 基类负责定义在层次关系中所有类共同拥有的成员,而每个派生类定义个字持有的成员。基类将类...
2018-10-30 15:58:41
137
原创 C++Primer_Chap14_操作重载和类型转换_笔记
基本概念 重载运算符函数的参数数量和该运算符作用的运算对象数量一样多。对于二院运算符,左侧运算对象传递给第一个参数,而右侧运算对象传递给第二个参数。除了重载的函数调用运算符operator()之外,其他重载运算符不能含有默认实参。 如果一个运算符函数是成员函数,则它的第一个(左侧)运算对象绑定到隐式的this指针上。因此,成员运算符函数的(显式)参数数量比运算符的运算对象总数少一个。...
2018-10-30 15:03:53
363
原创 C++Primer_Chap13_拷贝控制_笔记
一个类可以通过定义五种特殊的成员函数来控制此类型的对象拷贝、移动、赋值和销毁时的具体实现:拷贝构造函数(copy constructor) 拷贝赋值运算符(copy-assignment operator) 移动构造函数(move constructor) 移动赋值运算符(move-assignment operator) 析构函数(destructor)拷贝构造函数 如果一个...
2018-10-22 21:46:59
272
原创 C++Primer_Chap12_动态内存_笔记
静态内存:保存局部static对象、类static数据成员以及定义在任何函数之外的变量。栈内存: 保存定义在函数内的非static对象动态内存(堆): 存储动态分配的对象动态内存和智能指针 为了更安全的使用动态内存,,新的标准库提供了两种智能指针(smart pointer,定义在memory头文件中),与常规指针的区别在于负责自动释放所指向的对象。两种智能指针的区别...
2018-10-21 09:36:22
203
原创 C++Primer_Chap11_关联容器_笔记
关联容器中的元素是按关键字来保存和访问的,支持高效的关键字查找和访问。两个主要的关联容器是map和set。类型map和multimap定义在头文件map中。 类型set和multiset定义在头文件set中。 无序容器则定义在头文件unordered_map和unordered_set中关联容器类型 按关键字有序保存元素 map 关联数组:保存关键字-值对(例子:字典,单...
2018-10-19 22:03:33
168
原创 C++Primer_Chap10_泛型算法_笔记
标准库未给每个容器都定义成员函数来实现诸如查找特定元素、替换和删除一个特定值、重排元素顺序等操作,而是定义了一组泛型算法:称为“算法”,是因为其实现了一些经典算法的公共接口,如排序和搜索 称为“泛型”,是因为他们可以用于不同类型的元素和多种容器类型#include <algorithm>#include <numeric> auto result = ...
2018-10-18 20:27:46
400
原创 C++Primer_Chap09_顺序容器_List05_string操作_笔记
n、len2和pos2都是无符号值 string s( cp, n) s是cp指向的数组中前n个字符的拷贝。此数组至少应该包含n个字符 string s( s2, pos2) s是string s2从下标pos2开始的字符串的拷贝。若pos2>s2.size(),构造函数的行为未定义 string s(s2, pos2, len...
2018-10-18 14:51:49
150
原创 C++Primer_Chap09_顺序容器_List03_顺序容器操作_笔记
向顺序容器添加元素的操作 这些操作会改变容器的代销;array不支持这些操作 forward_list有自己专有版本的insert和emplace forward_list不支持push_back和emplace_back vector和string不支持push_front和emplace_front c.push_back(t) c.emplace_back(...
2018-10-16 10:55:12
181
原创 C++Primer_Chap09_顺序容器_List02_容器库概览_笔记
容器操作 类型别名 iterator 此容器类型的迭代器模式 const_iterator 可以读取元素,但不能修改元素的迭代器类型 size_type 无符号整型类型,足够保存此种容器类型最大可能容器的大小 difference_type 带符号整型类型,足够保存两个迭代器之间的距离 value_type 元素类型 reference ...
2018-10-15 18:45:47
162
原创 C++Primer_Chap09_顺序容器_List01_顺序容器概述_笔记
顺序容器类型 vector 可变大小数组。支持快速随机访问。在尾部之外的位置插入或删除元素可能很慢 deque 双端队列。支持快速随机访问。在头尾位置插入/删除速度很快 list 双向链表。只支持双向顺序访问,在list中的任何位置进行插入/删除操作速度都很快 forward_list 单向链表。只支持单向顺序访问。在链表中的任何位置进行插入/删除操作速度都很...
2018-10-15 17:06:14
157
原创 C++Primer_Chap08_IO库_List02_使用流文件对象_笔记
ifstream input( argv[1] );ofstream output( argv[2] );Sales_data total;if(read( input, total)){ Sales_data trans; while( read( input, trans)) { if(total.isbn() == trans.isbn() ) total.comb...
2018-10-15 16:44:02
144
原创 C++Primer_Chap08_IO库_List01_IO类_笔记
IO对象无拷贝和赋值ofstream out1, out2;out1 = out2; //错误:不能对流对象赋值ofstream print(ofstream); //错误:不能初始化ofstream参数out2= print(out2); //错误:不能拷贝流对象 由于不能拷贝IO对象,所以不能将其设置为形参或者返回类型...
2018-09-30 09:46:46
132
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人