如何通过优化个人网站排名来增加单次网站的盈利?
摘要:做网站一单能挣多少,个人怎么做网站排名优化,做百度手机网站,济南专业做网站公司哪家好【C笔记】Cstring类模拟实现 一、实现模型和基本接口1.1、各种构造和析构1.2、迭代器 二、各种插入和删除接口2.1、插入接口2.2、删除接口2.3
做网站一单能挣多少,个人怎么做网站排名优化,做百度手机网站,济南专业做网站公司哪家好【C笔记】Cstring类模拟实现 一、实现模型和基本接口1.1、各种构造和析构1.2、迭代器 二、各种插入和删除接口2.1、插入接口2.2、删除接口2.3、resize接口 三、各种运算符重载3.1、方括号运算符重载3.2、各种比较运算符重载 四、查找接口4.1、查找字符4.2、查找子串 五、流插入… 【C笔记】Cstring类模拟实现 一、实现模型和基本接口1.1、各种构造和析构1.2、迭代器 二、各种插入和删除接口2.1、插入接口2.2、删除接口2.3、resize接口 三、各种运算符重载3.1、方括号运算符重载3.2、各种比较运算符重载 四、查找接口4.1、查找字符4.2、查找子串 五、流插入流提取运算符重载5.1、流插入运算符重载5.2、流提取运算符重载 C的string类也就是字符串它是一个比较早的类所以就没有被归到STL里。 这里实现的string只是为了粗浅的了解一下string的底层原理所以可定不会有库里面的那么详细而且这里也只会实现一些常用的接口一些不常用的接口实现起来也没什么意思。 一、实现模型和基本接口
既然是管理字符串的那我们就直接封装一个char*即可
class String {
public :
private :char* _str; // 时刻被操作的字符串size_t _size; // 长度size_t _capacity; // 容量
};然后我们实现的各个接口都是为了操作类中封装的这个_str即可。
1.1、各种构造和析构
构造函数 其实构造函数有很多种实现方式但我们日常用的最多的应该就是字符串构造因为他本身就是存储字符串的嘛。 所以我们仅提供一个全缺省的构造函数即可
String(const char* str ) {_size strlen(str);_capacity strlen(str);_str new char[_capacity 1];strcpy(_str, str);}需要注意的是这里的容量表示的是该字符串最多能存多少个字符但我们都知道字符串的结束标志’\0’是不能少的每个字符串的结尾都必须存一个’\0’所以我们这里开空间是中要比容量多1。 拷贝构造 拷贝构造也很简单直接开一段新空间然后复制参数中_str的内容即可。
String(const String str) {// 只用来提示构造函数被调用cout String(const String str) endl;_str new char[str._capacity 1];strcpy(_str, str._str);_size str._size;_capacity str._capacity;}但是依然要注意我们这里开空间一定要比容量多1。 析构函数 因为我们至始至终都只管理着一个外部资源也就是_str所以析构函数要做的工作也就很简单了直接释放掉_str即可
~String() {// 只用来提示析构函数被调用cout ~String() endl; delete[] _str;_str nullptr;_size 0;_capacity 0;}然后我们可以先提供一个简易的打印接口来试验我们以上所写的接口
const char* get_str() const {return _str;}从运行的结果来看以上写的接口是没什么问题的。
1.2、迭代器
C中的迭代器是一个很棒的设计有了迭代器我们就可以使很多类的遍历方法变得相同。 但这只是写的时候相同迭代器其实是屏蔽了底层的原理然后使用一套统一的方法来遍历例如 如上字符串、vector和链表的底层肯定是不一样的但它们展现出来的遍历方式却是一样的这就是iterator迭代器的妙处。 这样一来即使有一些容器我们并不知道它的底层实现原理怎样但是我们也还是可以照常遍历它们。
相信大家从上面对it的解引用也可以看得出其实迭迭代器底层就是模拟的指针的行为。 但迭代器也并非都是用原生指针来实现的对于像string和vector指针顺序结构使用原生指针是完全可以的。但是对于list这种链式结构和各种树形结构使用原生指针的话就不行了这需要对原生指针就行再次封装才行。
