c++与算法
一些算法
修不了,重装吧,告辞。
兰州大学硕士在读,目前研究区块链与审计相关方向。
展开
-
linux服务器编程 9.6聊天室练习 epoll重写
《linux高性能服务器编程》 p183示例 epoll实现示例中服务端和客户端都使用了使用poll调用做io复用,我用epoll重写服务端代码,同时尽可能的用了c++风格。。。有些地方可能实现的很累赘,还请各位不吝赐教,这个小项目就权当是熟悉poll和epoll了。服务端代码:/*code for server*/#define _GNU_SOURCE 1#include<iostream>#include<string>#include<sys/原创 2020-09-02 18:48:42 · 250 阅读 · 0 评论 -
c++ liunx网络编程 头文件
头文件说明sys/types.hlinux系统基本数据类型文件,包含size_t,time_t,pid_t类型(很多typedef)sys/socket.h包含socket的各种方法以及常量的#definenetinet/in.h包含struct sockaddr_in以及htons系统调用等arpa/inet.h提供了ip地址转化函数,如inet_ptonunistd.hl包含了inux系统的很多系统服务的原型,如read,write,sleep,cl...原创 2020-08-31 15:54:28 · 417 阅读 · 0 评论 -
找前n个最大数 & 生成100个不重复的随机数
找前n个最大数假设有10000个数,需要找到里面前10个最大数。朴素的解法当然是先排序,然后输出前10 个数,时间复杂度最低为O(logn)。思考我们可以维护一个10个元素大小的容器,用在某种算法使得这个容器里面维护的就是我们需要的10个数。先从vector开始思考,用前10和数初始化,然后不断的遍历剩余元素,找到一种条件使得可以将新遍历得到的数字加入到vector中,为使得vector保存的是前10个最大的元素,则如果某一次遍历得到的元素大于vector中最小元素,则可以将该元素与vector中的原创 2020-05-12 13:02:30 · 301 阅读 · 0 评论 -
最短路径算法 Dijkstra和Prim详解
前言这几次面试的确有好多次问到了最短路径算法,当时答得确实不好,对算法理解的不是很透彻,下面简单梳理一下。Dijkstra算法Dijkstra算法有点DP的意思,适用于单源最短路径算法且要求边的权值非负,同时可以用于有向图和无向图。数据结构定义:map[][]:存放原始图;dis[]:存放从源点出发到达点i的最短路径长度;visited[]:记录节点是否已被访问。初始化:dis...原创 2020-04-30 12:52:45 · 1050 阅读 · 1 评论 -
c++ 为什么不用malloc初始化对象
想起上次网易互娱面试官问到的malloc和new的区别,虽然网上能查到很多标准答案,但还是自己试一试更清楚。写这篇实验其实也是收到了STL源码剖析这本书的影响,STL使用allocator配置空间,allocator在底层还是使用了malloc函数,那么STL为容器初始化对象时的做法,实际上就是这次实验的做法。开始测试的时候在想,为什么不用malloc去新建一个对象,我觉得原因有两点:ma...原创 2020-04-26 11:56:26 · 1507 阅读 · 1 评论 -
自己造的c++轮子 字符串系列
这里有一些我自己写的c++轮子,可能效率不高,但是能用。不定期更新,如果有错误或者bug还请不吝赐教。git仓库myString.cpp内容:函数std::vector<std::string> sub_str(const std::string &str, const std::string &elements = " ")接受一个待分割字符串str,分...原创 2020-04-16 10:06:12 · 195 阅读 · 1 评论 -
背包问题(1) 0/1背包、完全背包
0/1背包问题假设有n件物品,他们的体积分别为v[i],价值分别为w[i],有一个容量为m的背包,如何选择物品装入背包能够的得到最大的价值。(物品种类不超过N个)条件:每件物品至多只能选择1次状态定义:f [ i ],表示背包体积为 i 时的最大价值转移方程:f [ i ] = max( f [i] , f [ i - v [ i ] ] + w [ i ] )#include&l...原创 2020-03-31 16:03:52 · 177 阅读 · 0 评论 -
c++ Expression: vector iterator + offset out of range
今天写代码遇到这个问题void nextPermutation(vector<int>& nums) { int start = bigFlow(nums); sort(nums.begin() + start + 1, nums.end()); //报错行 }这个函数的报错是迭代器加法越界,因为我的bigFlow()函数返回值在-1~n之间,所以迭代器的区间...原创 2020-03-04 11:01:40 · 1263 阅读 · 0 评论 -
c++编译报错error LNK2001: 无法解析的外部符号
c++编译报错error LNK2001: 无法解析的外部符号这个报错是真的迷惑,一般会提示到无法解析的一个函数或者一个变量。如果是变量的话,一般是静态成员变量static typename xxx没有经过初始化便使用(不是类的数据成员的话vs会报错)。原因是我们如果只是声明静态变量而没有初始化的话,编译器是不会为这个静态变量分配空间的,只有当初始化静态变量之后,编译器才会在内存的静态区给这...原创 2020-02-13 18:12:06 · 1281 阅读 · 0 评论