c++学习笔记
文章平均质量分 93
荆赤潮
这个作者很懒,什么都没留下…
展开
-
《C++ Primer》第||部分读书笔记(第8~12章)
C++ Primer.png第八章ioseamiofsteam文件的操作:https://www.cnblogs.com/likebeta/archive/2012/06/16/2551662.html写程序流程要求:① 创建输入输出流,判断文件是否打开成功;② 如果文件打开成功,则处理。iostringsteam第九章1. 顺序容器容器类型 概述 vec...原创 2017-12-18 20:46:00 · 141 阅读 · 0 评论 -
【笔试练习题】字符串匹配算法KMP
一句话总结:空间换时间,用一个next数组保存不匹配时下一次开始比较时两个字符串指针的位置;next[ i ]中保存的是前i个字符后缀与前缀相同的个数。参考资料:【1】一个将KMP的视频,很好理解,而且很短,只有十来分钟。https://www.bilibili.com/video/av3246487?from=search&seid=18035591679131870458...原创 2019-06-12 10:09:00 · 802 阅读 · 0 评论 -
【笔试练习题】shell * 字符串匹配
题目:https://www.nowcoder.com/questionTerminal/bab19e5b95b54744aa824e0d7be51487动态规划,内存超限:#include <vector>#include <string>#include <iostream>#include <regex>using names...原创 2019-07-01 17:15:53 · 793 阅读 · 0 评论 -
【笔试练习题】输入二进制字符串,输出里面包含的1的个数
解法一:用bitset头文件:<bitset>整数、字符串和布尔数组都可以直接初始化bitset,也可以直接cin.参考资料:https://www.cnblogs.com/RabbitHu/p/bitset.htmlbitset.count() 直接返回里面有多少个1.解法二:variable precision swar算法(在redis里面看到的,一次...原创 2019-06-22 21:02:39 · 874 阅读 · 0 评论 -
【笔试练习题】leetcode前100道题里面的hard题解法(更新到第45题)
第4题(2个排序数组的中位数)找到两个已排序数组的中位数(https://leetcode.com/problems/median-of-two-sorted-arrays/)解法一:合并列表,再排序,时间复杂度为O(n+m);解法二:① 在nums1和nums2中各找到一个数,保证合并之后的数组中nums1[k_1]与nums2[k_2]相邻,且nums[k_1] < ...原创 2019-07-02 15:26:07 · 915 阅读 · 0 评论 -
【笔试练习题】C++正则表达式
leetcode 10class Solution {public: bool isMatch(string s, string p) { // 使用正则表达式直接求解 if(s=="") { if(p==""||isMatchEmpty(p)) { re...原创 2019-06-27 17:23:29 · 740 阅读 · 0 评论 -
【笔试练习题】求组合数
#include <iostream>#include <string>#include <algorithm>#define BIG 1000000000using namespace std; typedef long long ll; vector<char> res;int ok; // 求全排列C(n,m),如果越...转载 2019-06-24 19:45:25 · 599 阅读 · 0 评论 -
【面试练习题】C++ 使用多线程实现交替打印两个数组 + PV操作
互斥锁的版本:#include <string>#include <thread>#include <mutex>#include <iostream>using namespace std;std::mutex data_mutex;int flag = 0;void printA(int* a, int size) { ...原创 2019-07-08 23:01:36 · 2307 阅读 · 0 评论 -
【笔试练习题】手写LRU算法(leetcode 146)
class LRUCache {public: LRUCache(int capacity) : _capacity(capacity) {} int get(int key) { if(km_all.count(key) == 0 || !(km_all[key].is_inCache)){ return -1; ...原创 2019-07-13 13:47:33 · 1305 阅读 · 0 评论 -
【C++STL容器用法查补】
vector 的其他操作:v.data() 返回指向vector内部那个数组的首地址的指针(C++11新特性) v.emplace(v.end(), argvs); v.shrink_to_fit() 调整v.capacity()等于v.size()vector<bool>的其他操作:v_bool.flip() 每一位都取反 v_bool.swap(v_bool2);...原创 2019-06-30 17:01:52 · 555 阅读 · 0 评论 -
从10万个数据中找最大的10个数
海量数据处理 - 10亿个数中找出最大的10000个数(top K问题)https://blog.csdn.net/zyq522376829/article/details/47686867但是里面说的有问题,建堆的复杂度是O(m),总的复杂度是O(nlogm)从10万个数中找10个最大的数https://blog.csdn.net/sky_100/article/detai...转载 2019-06-30 22:23:25 · 5055 阅读 · 0 评论 -
【笔试练习题】寻找下一个字典序
leetcode第31题解法一(C++ STL函数):class Solution {public: void nextPermutation(vector<int>& nums) { next_permutation(nums.begin(), nums.end()); return ; }};...原创 2019-07-07 12:25:24 · 730 阅读 · 0 评论 -
【面试练习题】单例模式
饿汉式,基本版#include <iostream>using namespace std;class Single {private: Single() {} // 构造函数私有 Single(const Single &) {}; // 拷贝构造函数私有 Single& operator=(const Single&) {}; // 赋值...转载 2019-07-12 12:48:57 · 614 阅读 · 0 评论 -
关于输入输出流迭代器的使用小技巧
这种输出方式可骚气了:#include <vector>#include <set>#include <list>#include <map> // map不支持直接vector迭代器转换#include <unordered_set> #include <iostream> // std::cin, ...原创 2019-07-21 12:02:48 · 607 阅读 · 0 评论 -
【笔试练习题】二分查找找到最接近并小于val的元素
// 二分查找找到最接近并小于val的, 返回标号, start指向第一个元素,end指向最后一个元素,如果全部比val大, 就返回-1 int findFloor(int val, vector<int> &v, int start, int end){ if(start > end){ return start - 1...原创 2019-06-17 14:49:05 · 947 阅读 · 0 评论 -
【笔试练习题】局部链表反转
将链表的一部分(from~to)反转。#include <iostream>#include <vector>#include <algorithm>using namespace std;class node{public: node(int x):val(x), next(NULL){} ~node(); int val; node...原创 2019-06-04 21:41:28 · 712 阅读 · 0 评论 -
《VC++深入讲解》第一章第二章读书笔记
《VC++深入讲解》 孙鑫 电子工业出版社。书的第一版是2007年的,我看的是2013年的修订版。书中介绍的MFC架构,现在被广泛认为已经过时了,但前几章对一些概念为何引入讲得比较透彻,是一本不错的有点基础的菜鸟的入门书籍。 《VC++深入讲解》.png第一章 名词解释: 【SDK】Software Development Kit,软件开发包 【句柄】在Windows程序...原创 2017-12-03 11:45:00 · 129 阅读 · 0 评论 -
《C++ Primer》第I部分读书笔记(第1~7章)
C++ Primer.png第二章1. 引用与指针引用见上一篇文章;// 执行完后,a和b的值都变成c// 相当于b是a的小名int a = 5;int &b = a;int c = 3;b = c;指针例子如下:int x = 42;int *ip = &x; // ip指向x的地址。2. const2.1 const与defin...原创 2017-12-11 15:38:00 · 145 阅读 · 0 评论 -
【面试题】不用递归实现二叉树的遍历(使用栈)
源代码:https://github.com/cr19941016/preOrderTree实现环境:ubuntu16.04 + cmake3.5.1递归的本质就是循环和栈void TreeHandler::myPreOrder(TreeNode* root){ // 非递归先序遍历二叉树git cout << "mypre: "; if(!root) ...原创 2019-04-23 11:03:31 · 3232 阅读 · 0 评论 -
STL源码剖析—— accumulate函数尝试
此函数可以用来求和、求阶乘等等。demo代码如下,结果与预想的一样。#include <iostream>#include <numeric>#include <vector>using namespace std;template <class T> struct others // 自定义操作{ T operator() (co...原创 2019-05-07 17:06:12 · 698 阅读 · 0 评论 -
《C++对象模型》读书笔记
一、对象中member存放的顺序按照声明的顺序二、static数据成员存放在数据段中(应该即为区全局区和静态存储区)三、虚函数表初始化的时间是父类部分初始化完成后,子类部分的成员生成之前。四、执行时,虚函数根据this指针指向的虚函数表指针指向的虚函数表中的函数执行(保障执行期多态)。五、单一继承的话,一个对象只有一个虚函数指针,六、虚拟继承的话,父类中定义了虚函数、子类也...原创 2019-05-21 11:34:08 · 518 阅读 · 0 评论 -
【笔试练习题】leetcode 416. Partition Equal Subset Sum
题目:判断一个数组是否能被拆分成两个子数组,使得这两个子数组各自的数字和相等。方案:回溯法问题:很容易超时。如果从小到大排序会超时,只有从大到小排序才可以。class Solution {public: bool canPartition(vector<int>& nums) { int sum = 0; for(int ...原创 2019-06-05 10:04:53 · 498 阅读 · 0 评论 -
【笔试练习题】大数相加、大数相乘
大数相加:#include <iostream>#include <vector>#include <string>using namespace std;string add(string &a,string &b){ if(a.size() < b.size()) swap(a, b); ...原创 2019-05-30 22:17:26 · 661 阅读 · 0 评论 -
【笔试练习题】质数因子
题目描述功能:输入一个正整数,按照从小到大的顺序输出它的所有质数的因子(如180的质数因子为22335)最后一个数后面也要有空格。代码(复杂度可以优化到sqrt(n)):链接:https://www.nowcoder.com/questionTerminal/196534628ca6490ebce2e336b47b3607来源:牛客网#include <io...转载 2019-05-31 10:47:36 · 556 阅读 · 0 评论 -
【笔试练习题】背包问题
题目描述:有若干瓶饮料,每种饮料只有一瓶,每种饮料的打分不同,价格也不同。你的手里有买饮料的总金额,要求买到的饮料的打分总和最高。输入:第一行是一个正整数,总金额(不大于1000);第二行是n个正整数,代表饮料单价(n不大于100);第三行是n个正整数,代表饮料的打分。输出:最高总分解析:这是经典的背包问题。背包容量——总金额;物品重量——单价;物品价值——热度值。#...原创 2019-06-05 15:29:28 · 1026 阅读 · 0 评论 -
【笔试练习题】排序算法
测试用的IDE是牛客网:https://www.nowcoder.com/questionTerminal/508f66c6c93d4191ab25151066cb50ef【1】快速排序#include <vector>#include <random>#include <algorithm>#include <iostream>u...原创 2019-06-12 22:35:59 · 625 阅读 · 0 评论 -
【笔试练习题】leetcode127. Word Ladder(广度优先遍历)
这是leetcode上第127题。给出原单词和目标单词和一个字典,在字典中找到过渡单词,使得原单词可以变为目标单词。要求:一次只变一个字母。输出为:最短变化路径的长度。class Solution {public: int ladderLength(string beginWord, string endWord, vector<string>& wor...原创 2019-06-04 11:28:03 · 776 阅读 · 0 评论 -
【笔试练习题】(动态规划)leetcode 115 Distinct Subsequences + 97. Interleaving String
115.Distinct Subsequences题目描述:https://leetcode.com/problems/distinct-subsequences/即判断一个字符串S可以匹配多少个子串T。例子1:Input: S = "rabbbit", T = "rabbit"Output: 3Explanation:As shown below, there are...原创 2019-06-20 19:06:50 · 531 阅读 · 0 评论 -
C++中的设计模式整理
最近在看《Effective C++ 的55条建议》和C++源码剖析,把上面提到设计模式在这里做个记录,以备面试之需。之前的设计模式总结:设计模式学习笔记(一)(策略、观察者、装饰者、工厂)设计模式学习笔记(二)(单例、命令、适配器、外观、模板方法)设计模式学习笔记(三)(迭代器、组合、状态、代理、复合)【1】《Effective C++》条款35,用Non-Virtua...原创 2019-07-21 17:36:29 · 620 阅读 · 0 评论