C++
c++初阶与进阶
ygtrece_13
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
模拟实现vector类
#include<iostream>#include<assert.h>using namespace std;template<class T>class Vector{public: //迭代器类型: T* typedef T* iterator; typedef const T* const_iterator; Vector() :_start(nullptr) , _finish(nullptr) , _endOfStorag.原创 2021-08-18 17:25:54 · 209 阅读 · 0 评论 -
模拟实现string类
class String {public: //String的迭代器操作类似于指针,是通过字符指针实现的 typedef char* iterator; typedef const char* const_iterator; iterator begin() { //第一个元素的位置 return _data; } iterator end() { //最后一个元素的下一个位置 return _data + _size; } const_iterator beg.原创 2021-07-30 14:59:25 · 112 阅读 · 0 评论 -
string类的深浅拷贝(传统与现代写法)
经典写法://经典写法class String{public: //全缺省构造函数 String(const char* str = "") :_data(new char[strlen(str) + 1]) { strcpy(_data, str); } //浅拷贝(编译器默认生成的拷贝构造函数) //浅拷贝只拷贝String中的内容,析构时可能会造成同一份资源的二次释放 //赋值时还可能造成被赋值对象之前的资源泄漏 /*String(const String&原创 2021-07-28 18:43:16 · 209 阅读 · 0 评论 -
C++日期类的实现
class Date{public: // 获取某年某月的天数 int GetMonthDay(int year, int month) { static int days[13] = { 0,31,28,31,30,31,30,31,31,30,31,30,31 }; int day = days[month]; if (month == 2 && (((year % 4 == 0) && (year % 100 != 0)) || (year % 4原创 2020-05-25 12:39:46 · 311 阅读 · 0 评论 -
容器适配器stack、queue和priority_queue模拟实现
stacknamespace bit{#include<deque> template<class T, class Con = deque<T>> class stack { public: stack() {} void push(const T& x) { _c.push_back(x); } void pop() { _c.pop_back(); } T& top() { re原创 2020-07-07 19:50:12 · 719 阅读 · 0 评论 -
模拟实现双向带头循环链表list
namespace bite{ // List的节点类 template<class T> struct ListNode { ListNode(const T& val = T()); ListNode<T>* _pPre; ListNode<T>* _pNext; T _val; }; //List的迭代器类 template<class T, class Ref, class Ptr> class ListIte原创 2020-07-07 09:06:01 · 211 阅读 · 0 评论 -
二叉搜索树
using namespace std;template <class T>class BSTNode{ T _val = 0; BSTNode<T>* _left; BSTNode<T>* _right; BSTNode(const T& val = T()) :_val(val) ,_left(nullptr) ,_right(nullptr) {}};template <class T>class BSTre原创 2020-07-05 16:40:10 · 152 阅读 · 0 评论 -
模拟实现string类
class string{public://构造函数 string(const char* str = "") { if (str == nullptr) str = ""; _str = new char[strlen(str) + 1]; strcpy(_str, str); } //拷贝构造 //传统写法 string(const string& s) :_str(new char[strlen(s._str) + 1]) { strcpy(_s原创 2020-07-01 15:36:11 · 173 阅读 · 0 评论 -
特殊类设计
//只能在堆上创建对象的类// 1. 构造函数私有// 2. 提供一个静态的堆上创建对象的方法// 3. 防拷贝(拷贝构造声明为私有,且不实现, 或者声明为delete函数)class HeapOnly{public: static HeapOnly* getInstance() { return new HeapOnly; }private: HeapOnly() {} HeapOnly(const HeapOnly& ho) = delete;};//只能在原创 2020-08-10 11:49:05 · 514 阅读 · 0 评论 -
位图的实现、布隆过滤器的模拟实现
位图class BitMap{public: BitMap(size_t range) { _bit.resize(range / 32 + 1); } //查询:Test bool Test(size_t n) { //整数位置 int idx = n / 32; int bitIdx = n % 32; //获取对应bit位的二进制值 if ((_bit[idx] >> bitIdx) & 1) return true; else原创 2020-07-29 09:01:33 · 196 阅读 · 0 评论 -
哈希表开散列哈希桶实现,unordered_map和unordered_set的模拟实现
template<class K>struct keyOfValue{ const K& operator()(const K& key) { return key; }};template<class V>struct HashNode{ V _value; HashNode<V>* _next; HashNode(const V& _val = V()) :_value(val) ,_next(nullp原创 2020-07-27 19:46:03 · 173 阅读 · 0 评论 -
红黑树模拟实现
enum Color{RED,BLACK};template<class T>struct RBTreeNode{ RBTreeNode(const T& data = T(), Color color = RED) :_pLeft(nullptr) ,_pRight(nullptr) ,_pParent(nullptr) ,_data(data) ,_color(color) {} RBTreeNode* _pLeft; RBTreeNode* _pR原创 2020-07-20 17:17:17 · 191 阅读 · 0 评论 -
AVL树简单实现以及验证-插入
template<class T>struct AVLTreeNode{ AVLTreeNode(const T& data = T()) : _pLeft(nullptr) , _pRight(nullptr) , _pParent(nullptr) , _data(data) , _bf(0) {} AVLTreeNode<T>* _pLeft; AVLTreeNode<T>* _pRight; AVLTreeNode<原创 2020-07-18 11:55:14 · 274 阅读 · 0 评论
分享