c++ 个人
Silent_Blue_Sky
欢迎留言讨论
展开
-
c 运算符优先级顺序速记
在掌握C语言中的运算符及其优先级时,有一套简洁而高效的速记口诀可以帮助我们迅速记住它们的顺序和用法。这些口诀不仅便于记忆,而且能够在编程实践中快速定位和解决问题。下面是这套速记口诀的详细解读和一些额外的说明,旨在帮助读者更好地理解和应用。原创 2024-02-21 11:35:13 · 658 阅读 · 0 评论 -
c++ STL less 的视角
c++ less 函数在不同的地方感觉所起的作用是不一样的, 这中间原因是 less 的视角不一样, 下面尝试给出解释下, 方便记忆。原创 2024-02-02 14:55:27 · 446 阅读 · 0 评论 -
c++ 字符串切分split
c++ 字符串切分split 的举例实现一共给出了四种方式1、 strtok3、 字符串查找4、 基于封装的方式,提供了 c++11 foreach 接口。原创 2024-01-31 20:32:17 · 364 阅读 · 0 评论 -
c++ 类型处理初步代码
#include <iostream>#include <map>#include <string>using namespace std;enum class DataType { NULL_TYPE = 0, INT_TYPE = 1, DOUBLE_TYPE = 2, STRING_TYPE = 3,};struct Column { DataType type; void *data;};Col原创 2022-04-08 16:35:36 · 811 阅读 · 0 评论 -
c #和##的简单使用
记一次使用经历#include<iostream>using namespace std;struct A { bool has_get_a() { return true; } int get_a() { return 1; }};struct B { bool has_get_b() { return false; } int get_b() { return原创 2022-03-15 16:22:25 · 677 阅读 · 0 评论 -
c++-密码生成小程序
老是需要改密码, 所以自己写个生成器, 会生成很复杂的密码, 并记录在文件里面输出代码#include <iostream>#include <fstream>#include <random>#include <unistd.h>using namespace std;static std::string base = "qwertyuiopasdfghjklzxcvbnm1234567890%-+=,./?:;'@!^$&()原创 2022-02-21 15:38:39 · 716 阅读 · 0 评论 -
c++ sort 函数comparator的注意事项
comparator 的签名必须为 bool cmp(const Type1 &a, const Type2 &b)对于相等的值用于返回 false对于第二点可能有些难以理解,下面将进行详细解释c++ sort 的实现非常厉害, 里面包括了插入排序, 堆排序,快排等等各种排序,在快排的实现上 template<typename _RandomAccessIterator, typename _Size> void __introsort_lo.原创 2021-12-16 11:32:46 · 1708 阅读 · 0 评论 -
c++模板编程-模板静多态-标签分发实例
#include <iostream>#include <vector>#include <memory>#include <type_traits>using namespace std;// c++模板编程-模板静多态-标签分发实例template<typename T>struct is_char : public false_type {};template<>struct is_char<ch原创 2021-11-03 10:53:59 · 824 阅读 · 2 评论 -
c++ 移动构造移动赋值-简单代码
class AA { private: char *buffer{}; int init(const char *data) { buffer = nullptr; int sz = strlen(data); buffer = new(nothrow)char[sz + 1]; if (!buffer) { return -1; } strncpy(buffer, d原创 2021-10-19 17:35:28 · 199 阅读 · 0 评论 -
c++ CRTP静多态的实现(vs 动多态)
#include <iostream>using namespace std;// 动多态class VirObj { public: virtual void what() const { cout << "Obj !!!" << endl; }};class VirAnimal : public VirObj { public: void what() const override { cout原创 2021-10-15 20:15:52 · 160 阅读 · 0 评论 -
c++-CRTP的重载运算符
template<typename Derived>class EqualityComparable { public: friend bool operator==(Derived const &x1, Derived const &x2) { return !(x1 < x2) && !(x2 < x1); } friend bool operator!=(Derived const &x1,原创 2021-10-15 17:56:16 · 135 阅读 · 0 评论 -
c++-模板编程笔记1
template<typename T>struct TypeT { using Type = T;};template<typename T>constexpr auto type = TypeT<T>{};template<typename T>T ValueT(TypeT<T>);class funcValidPolicy { public: template<typename F, typenam原创 2021-10-14 11:02:38 · 126 阅读 · 0 评论 -
c++ 函数指针自我体会
#include <iostream>#include <utility>#include <string>#include <cstring>#include <vector>#include <map>#include <set>#include <stack>#include <queue>#include <unordered_map>#include <原创 2021-08-26 11:41:24 · 111 阅读 · 0 评论 -
c++ vector 内存布局
先上代码int main() { vector<int> arr = {1, 2, 3, 4}; int* start = (int*)(*((long long*)&arr)); int* end = (int*)(*((long long*)&arr)) + arr.size(); while(start != end) { cout << start << "\t" <<*start &原创 2021-08-23 16:07:48 · 560 阅读 · 0 评论 -
c++ string literals 的一点心得
意思是"abc"_sm 会被视为 operator""_sm(“abc”, 3);这个 len 字段会自动被算出来。auto isVowel = [vowels = "aeiouAEIOU"s](char ch) 这个s什么意思呀。想了想应该是 c++11 之后的 operator""s。发现这函数签名和实际调用参数个数不对的,于是查看了汇编码。所以有趣的事就来了, 编译期计算字符串字面量的长度。自己自定义了一个类似函数,发现也是可用的。编译期确实帮助传了__len 这个参数。后来看了源码发现是这样。...原创 2021-08-19 14:54:09 · 893 阅读 · 2 评论 -
c++ 内置类型忘记初始化
#include <iostream>#include <utility>#include <string>#include <cstring>#include <vector>#include <map>#include <set>#include <stack>#include <queue>#include <unordered_map>#include <原创 2021-08-11 11:20:28 · 112 阅读 · 0 评论 -
c++-循环队列的实现
循环队列有很多用处实现方式也有很多种下面的实现因为有取 rear 的操作所以实现的没那么优美如果没有取 rear的操作,可以取一个节点为 不可用节点rear == front 链表空rear->next = front 链表满/* * 单线程 * * * */class MyCircularQueue {private: struct ListNode { int val; ListNode *next; }; Lis原创 2021-08-05 11:34:37 · 94 阅读 · 0 评论 -
c++ 17 range的实现
pyhton 的 range 功能非常好用,那么 c++ 怎么来一个呢下面自己实现一个#include <iostream>#include <utility>#include <string>#include <cstring>#include <vector>#include <map>#include <set>#include <stack>#include <queue>原创 2021-07-29 11:27:27 · 326 阅读 · 0 评论 -
c++数组写文件
#include <iostream>#include <utility>#include <string>#include <cstring>#include <vector>#include <map>#include <set>#include <stack>#include <queue>#include <unordered_map>#include <原创 2021-07-26 15:07:17 · 1400 阅读 · 0 评论 -
c++ 中括号字符串转换成数组
#include <iostream>#include <string>#include <vector>#include <algorithm>using namespace std;class NestedVec {public: NestedVec() { valid = false; _value = 0; } explicit NestedVec(int value) {原创 2021-07-26 11:36:38 · 1167 阅读 · 3 评论 -
c++- 两个正序数组的中位数
#include <iostream>#include <utility>#include <string>#include <cstring>#include <vector>#include <map>#include <set>#include <stack>#include <queue>#include <unordered_map>#include <原创 2021-07-22 17:29:43 · 105 阅读 · 0 评论 -
c++-深海中的stl mt19937 随机数生成
为什么用这个1、rand()随机数 的范围为0~32767 范围有限2、mt19937 速度快, 范围没有限制int main(){ // 随机数种子 std::random_device rd; mt19937 rand_num(rd()); // 大随机数 uniform_int_distribution<long long> dist(0, 1000000000); // 给定范围 cout << dist(rand_num) << endl;原创 2021-07-12 14:53:40 · 663 阅读 · 0 评论 -
c++ enable_shared_from_this的工作原理
直接引入了enable_shared_from_this, 懂得都懂, 不懂的去查,就不科普了使用方式class Observer : public enable_shared_from_this<Observer> {private: // 1. 避免产生非智能指针的对象, 这个是使用enable_shared_from_this 要注意的一点, 不然会产生 weak_ptr bad_alloc异常 Observer() { cout << "原创 2021-07-08 15:49:28 · 494 阅读 · 0 评论 -
c++-观察者模式的实现
#include <iostream>#include <unordered_set>#include <memory>using namespace std;class Observer;class Subject;class Subject {private: unordered_set<shared_ptr<Observer>> obs;protected: char buff[1024]{};p原创 2021-07-08 12:45:56 · 122 阅读 · 0 评论 -
c++ 虚表解析
class fa{public: int age; fa(){} virtual ~fa(){cout << "des fa" << endl;} virtual void show(){cout << "fa show" << endl;} virtual void wohs(){cout << "fa wohs" << endl;}};class son : public fa{p原创 2021-07-06 19:39:37 · 63 阅读 · 0 评论 -
c++-内存布局模型
1.1、 无继承, 无虚函数class A {private: short pri_short_a;public: int i_a; double d_a; static char ch_a; void funcA1() { pri_short_a = 1; i_a = 2; d_a = 3.1; }};char A::ch_a;int main() { A a; a.funcA1原创 2021-07-06 12:33:52 · 223 阅读 · 4 评论 -
c++数组与指针小记
class TextureRotationUtil {public: static const int* TEXTURE_NO_ROTATION;};const int* TextureRotationUtil::TEXTURE_NO_ROTATION = (int[]){1, 2, 3};int main() { int* x = (int[]){1, 2, 3}; cout << typeid(x).name() << endl; .原创 2021-07-05 14:57:57 · 86 阅读 · 0 评论 -
c++ stl 好用的算法函数 -01 partition
partition 是一种非常好用的编程思想, 比如,我们需要找到一堆数里面的符合要求的所有数,并将所有的数分成两堆,前面的符合要求,后面的不符合要求, 比如找到所有的偶数, 所有的的素数等等, 我们想介绍函数的用法,最后再,再来详解代码的实现1、分两堆,前面是偶数,后面是其他/////// 工具函数, 随机生成 vector < int > get_random_vec_int(int n , int limit) {i < n;++ i) {原创 2021-07-01 12:30:23 · 1300 阅读 · 0 评论 -
c++-gcc 内建函数
gcc 内建函数下列函数只能用于 u n s i g n e d unsigned unsigned,每个函数有对应的 l o n g ,longlong版本,在函数最后加上 l , l l l,ll l,ll即可(__builtin_popcountll(n))。find first set bit in word return ct1. __builtin_ffs(x)返回 x的最后一位 1 是从后向前第几位clz count_leading_zeros返回 x x x的最后一位 1原创 2021-06-25 17:18:05 · 248 阅读 · 0 评论 -
c++---递归调试之递归过程打印
void printIncident(int ct) { for (int i = 0; i < ct; ++i) { cout << " "; }}int total = 0;int fbs(int n) { total++; if (n == 2) { printIncident(--total); cout << "n = " << n << end原创 2021-06-24 17:20:53 · 328 阅读 · 0 评论 -
c++ basic_string 特化
使用场景,使用 string 类似的功能的时候typedef basic_string<int> intString;int main() { intString is; is += 1; is += 2; is += 3; is += 4; is += 5; is += 6; is += 7; auto x = is.substr(2, 4); cout << is.find(3) <<原创 2021-06-24 11:25:02 · 283 阅读 · 0 评论 -
leetcode-代码测试模板
代码提交前的测试模板#include <iostream>#include <utility>#include <string>#include <cstring>#include <vector>#include <map>#include <set>#include <stack>#include <queue>#include <unordered_map>#i原创 2021-06-23 11:43:19 · 859 阅读 · 1 评论 -
c++从堆到哈希堆
#include <iostream>#include <utility>#include <string>#include <cstring>#include <vector>#include <map>#include <set>#include <stack>#include <queue>#include <unordered_map>#include <原创 2021-06-16 20:21:46 · 232 阅读 · 0 评论 -
c++ 大数乘法并取模
#include <iostream>#include <utility>#include <string>#include <cstring>#include <vector>#include <map>#include <set>#include <stack>#include <queue>#include <unordered_map>#include <原创 2021-06-16 16:40:55 · 1080 阅读 · 0 评论 -
c++扩展欧几里德算法 + 求逆元 + 中国剩余定理
【代码】c++扩展欧几里德算法 + 求逆元 + 中国剩余定理。原创 2021-06-15 20:01:39 · 222 阅读 · 0 评论 -
c++点分十进制 ip 与整数互转-考虑大小端
#include <iostream>#include <utility>#include <string>#include <cstring>#include <vector>#include <map>#include <set>#include <stack>#include <queue>#include <unordered_map>#include <原创 2021-06-15 12:02:07 · 571 阅读 · 0 评论 -
c++codeforce 代码测试模板
准备工作:创建 input.txt 放测试数据创建 expect.txt 放预期结果编译命令g++ main.cpp -std=c++17 -Wall -DTEST#include <iostream>#include <utility>#include <string>#include <cstring>#include <vector>#include <map>#include <set>原创 2021-06-10 11:36:06 · 785 阅读 · 1 评论 -
c++-动态规划算法-最长公共子序列
#include <map>#include <iostream>#include <string>#include <vector>using namespace std;class Solution {public: int longestCommonSubsequenceHelper(string &A, string &B, int ia, int ib, vector<vector<int>&原创 2021-05-31 02:10:20 · 323 阅读 · 0 评论 -
c++动态规划算法-01背包问题
所谓动态规划, 只是暴力搜索的优化而已当你能写出暴力搜索, 动态规划就不远了#include <iostream>#include <utility>#include <string>#include <string.h>#include <vector>#include <map>#include <set>#include <stack>#include <queue>#in原创 2021-05-28 19:28:37 · 331 阅读 · 0 评论 -
c++函数式编程2-函数式对象的生成
紧接上文,我们发现一个问题, 我们只能使用函数式对象, 而不能用已经存在的函数,下面讲讲如何解决这个问题int add(int i) { return i + 1;}auto print_one = [](int data) { cout << data << endl; return data;};// 函数包装类生成器#define define_functor_type(func_name) \class func_name##_wra原创 2021-05-28 11:57:58 · 74 阅读 · 0 评论