- 博客(14)
- 资源 (1)
- 收藏
- 关注
原创 pugixml输出至string
pugixml处理了半天发现输出至string很不方便,官方文档操作如下:// 这里麻烦的是需要自己定义struct xml_string_writer: pugi::xml_writer { std::string result; virtual void write(const void* data, size_t size) { result.append(static_cast<const char*>(data), size);
2022-03-31 00:27:44
995
原创 C++智能指针shared_ptr、unique_ptr和weak_ptr
引言: 在C++中,常使用动态内存,一般情况下常使用new申请,delete释放。常见的三种情况有:程序不知道自己需要使用多少对象 程序不知道所需对象的准确类型 程序需要在多个对象间共享数据(申请的动态内存不会随着指针作用域的结束而自动释放)new分三步执行:1.调用malloc申请动态内存;2.调用传入类型的构造函数;3.判断是否有异常并将其抛出。delete原理相似例...
2019-01-16 20:46:36
463
原创 Shell脚本调试方法
Shell提供了一些用于调试脚本的选项,如:-n 读一遍脚本中的命令但不执行,用于检查脚本中的语法错误。-x 提供跟踪执行信息,将执行的每一条命令和结果依次打印出来。-v 一边执行脚本,一边将执行过的脚本命令打印到标准错误输出(我理解的应该是为了达到无缓冲的目的)。 关于-x的使用方法:(指的三选一,并不是说比如在方法1中传入-x参数,才可以使用方法3)1.在命令行提供参数...
2019-01-09 12:48:02
591
原创 CS模型epoll和线程池实现服务器高并发
使用信号量对主线程和线程处理函数进行线程同步,当线程处理函数读取完套接字的数据后通知信号量解除主线程的阻塞,开始处理下一个事件。 定义结构体dealinfo用来传送文件描述符和字符串地址。 注意一点,不能在线程处理函数中关闭不需要的文件描述符。不然会发生惊群现象 "threadpool.h"头文件是用来实现线程池的 服务器实现的功能是把客户端发来的字符串转大写#include<s...
2019-01-04 18:03:09
686
转载 CS模型下的服务器高并发,线程和进程实现框架
实现的功能是把客户端发过的字符串转化为大写回写给客户端。多进程server.c#include<stdio.h>#include<stdlib.h>#include<string.h>#include<unistd.h>#include<ctype.h>#include<arpa/inet.h>#incl...
2018-12-30 23:18:18
720
原创 C++类初始化问题的全面解析
类的初始化,用到的会有默认构造函数,带参构造函数和拷贝构造函数。(并不包含赋值函数)如下class A{public: A():x(0),y(0){}; A(int a, int b) :x(a), y(b){}; A(const A &other) { x = other.x; y = other.y; } A &operator=(const A ...
2018-12-22 23:17:42
356
原创 c++中extern关键字和static的作用域的学习
之前对static修饰变量后作用域的问题一直是大体了解,感觉和普通变量的作用域并没有什么区别。聚个栗子在A.h中:#pragma oncestatic int a=365;class A{public: A(); ~A();};在main.c中:#include<iostream>#include"A.h" using namespace std;...
2018-11-30 12:20:23
247
原创 全排列 给定一个没有重复数字的序列,返回其所有可能的全排列。
比较经典的回溯算法,用了之后记得要标记出来。标记后下一轮记得重置class Solution {public: vector<vector<int>> permute(vector<int>& nums) { vector<vector<int>> res; if(nums.empt...
2018-10-07 22:10:00
5027
原创 生成括号 给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。C++
核心是必须要先有一个左括号才能给字符串添加括号,且无论何时右括号的个数一定要小于等于左括号的个数而且函数参数最好不要使用引用,方便临时变量的赋值。C++代码如下class Solution {public: vector<string> generateParenthesis(int n) { vector<string> res;...
2018-10-07 21:21:33
3270
原创 C++每个节点的右向指针(用二级指针操作指针)
核心就是用二级指针操作指针,现有一个一级指针TreeLinkNode *p1;二级指针 TreeLinkNode **p2=&p1;什么意思呢,就是一级指针取地址后传递给二级指针让他保存我的地址,不要多想,就是这么简单。好,现在呢单p2这两个字母,就是一个二级指针了。那么p1==*p2懂了吧,(p2用*取出对应地址里面的东西),也有(实际里边放置的玩意儿)==*p1==**...
2018-09-04 18:30:27
189
原创 请判断一个链表是否为回文链表。
思路是按序转成vector向量,方便随机访问示例 1:输入: 1->2输出: false示例 2:输入: 1->2->2->1输出: trueclass Solution {public: bool isPalindrome(ListNode* head) { ListNode* temp=head; ...
2018-08-12 22:27:33
938
原创 C++编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 ""。
(这篇文章提供了一个最简单的方法,有兴趣的朋友可以去学习下字典树的使用,对于处理较大的数据是以个非常好的方法)设置一个临时变量保存第一个字符串的每一位就可以了,比较第2-n个字符串的是否一直相等是的话保存,不是的话返回之前的字符串。可能三个字符串完全相同,所以最后还应该有一个return 示例 1:输入: ["flower","flow","flight"]输出: "fl"...
2018-08-07 15:34:12
3328
原创 报数序列是指一个整数序列,按照其中的整数的顺序进行报数,得到下一个数。C++
//细心一点就可以做出来,重点是int和char与string的拼接。char一定要直接+,不能使用to_string,不然会乱码1. 12. 113. 214. 12115. 1112211 被读作 "one 1" ("一个一") , 即 11。11 被读作 "two 1s" ("两个一"), 即 21。21 被读作 "one 2",...
2018-08-07 15:03:07
2538
原创 c++给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序
新建一个等长全为0的向量,遍历目标向量,不是0就输入进去class Solution {public: void moveZeroes(vector<int>& nums) { vector<int> result(nums.size(),0); int j=0; for(int i:n...
2018-08-03 21:18:47
4296
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人