当前位置: 首页 > news >正文

网站怎么收费的武汉搜索引擎排名优化

网站怎么收费的,武汉搜索引擎排名优化,关于强化政府网站建设工作方案,网站建设赚钱流程引子:我们学习了c中的string类,那我们能不能像以前数据结构一样自己实现string类呢?以下是cplusplus下的string类,我们参考参考! 废话不多说,直接代码实现:(注意函数之间的复用&…

引子:我们学习了c++中的string类,那我们能不能像以前数据结构一样自己实现string类呢?以下是cplusplus下的string类,我们参考参考!

废话不多说,直接代码实现:(注意函数之间的复用!)

#define _CRT_SECURE_NO_WARNINGS 1
#pragma once
#include<iostream>
#include<assert.h>
using namespace std;
//一般在类外进行静态区变量赋值
const static size_t npos = -1;
//本string简单实现,代码量小,故直接写在声明中
namespace bit
{
    class string
    {
    public:
        //采用typedef 让iterator保持接口的一致性
        //iterator底层是模版template
        typedef char* iterator;
        typedef const char* const_iterator;
        
        iterator begin()
        {
            return _str;
        }
        iterator end()
        {
            return _str + _size;
        }
        const_iterator begin() const
        {
            return _str;
        }
        const_iterator end() const
        {
            return _str + _size;
        }

        //构造函数
        string(const char* str = "")
            :_size(strlen(str))
        {
            _str = new char[_size + 1];//为深拷贝,因为如果浅拷贝的话,共用一块空间,那结果可想而知
            _capacity = _size;
            strcpy(_str, str);//注意char * strcpy ( char * destination, const char * source );
        }
        //拷贝构造,可以隐式类型赋值
        string(const string& s)
        {
            _str = new char[s._capacity + 1];
            strcpy(_str, s._str);
            _size = s._size;
            _capacity = s._capacity;
        }
        string& operator=(const string& s)
        {
            if (this != &s)//排除等于自身的情况
            {
                char* tmp = new char[s._capacity + 1];
                strcpy(tmp, s._str);
                delete[]_str;//只析构_str上的资源
                _str = tmp;
                _size = s._size;
                _capacity = s._capacity;
            }
            return *this;
        }
        ~string()
        {
            delete[]_str;
            _str = nullptr;
            _size = _capacity = 0;
        }
        const char* c_str() const
        {
            return _str;
        }
        size_t size() const
        {
            return _size;
        }
        char& operator[](size_t pos)
        {
            assert(pos < _size);
            return _str[pos];
        }
        const char& operator[](size_t pos) const
        {
            assert(pos < _size);
            return _str[pos];
        }

        void reserve(size_t n)
        {
            if (n > _capacity)
            {
                char* tmp = new char[n + 1];
                strcpy(tmp, _str);
                delete[] _str;

                _str = tmp;
                _capacity = n;
            }
        }
        void insert(size_t pos, char ch)
        {
            assert(pos <= _size);

            if (_size == _capacity)
            {
                size_t newcapacity = _capacity == 0 ? 4 : _capacity * 2;
                reserve(newcapacity);
            }
            size_t end = _size + 1;
            while (end > pos)
            {
                _str[end] = _str[end - 1];
                --end;
            }
            _str[pos] = ch;
            ++_size;
        }
        void insert(size_t pos, const char* str)
        {
            assert(pos <= _size);
            size_t len = strlen(str);
            if (_size + len > _capacity)
            {
                reserve(_size + len);
            }
            size_t end = _size;
            //注意pos=0时,对应的值为size_t类型,要int转
            while (end > (int)pos)
            {
                _str[end+len] = _str[end];
                --end;
            }

            memcpy(_str + pos, str, len);//void * memcpy ( void * destination, const void * source, size_t num );
            _size += len;
        }
        void push_back(char ch)
        {
            insert(_size, ch);
        }
        void append(const char* str)
        {
            insert(_size, str);
        }
        string& operator+=(char ch)
        {
            push_back(ch);
            return *this;
        }
        string& operator+=(const char* str)
        {
            append(str);
            return *this;
        }
        void erase(size_t pos = 0, size_t len = npos)
        {
            assert(pos < _size);

            // len大于前面字符个数时,有多少删多少
            if (len >= _size - pos)
            {
                _str[pos] = '\0';
                _size = pos;
            }
            else
            {
                strcpy(_str + pos, _str + pos + len);
                _size -= len;
            }
        }

        size_t find(char ch, size_t pos = 0)
        {
            for (size_t i = pos; i < _size; i++)
            {
                if (_str[i] == ch)
                {
                    return i;
                }
            }
            return npos;
        }
        size_t find(const char* str, size_t pos = 0)
        {
            char* p = strstr(_str + pos, str);//char * strstr (char * str1, const char * str2 );
            return  p - _str;
        }
        void swap(string& s)
        {
            std::swap(_str, s._str);
            std::swap(_size, s._size);
            std::swap(_capacity, s._capacity);
        }
        string substr(size_t pos = 0, size_t len = npos)
        {
            // len大于后面剩余字符,有多少取多少
            if (len > _size - pos)
            {
                string sub(_str + pos);
                return sub;
            }
            else
            {
                string sub;
                sub.reserve(len);
                for (size_t i = 0; i < len; i++)
                {
                    sub += _str[pos + i];
                }
                return sub;
            }
        }
        bool operator<(const string& s) const
        {
            return strcmp(_str, s._str) < 0;
        }
        bool operator>(const string& s) const
        {
            return !(*this <= s);
        }
        bool operator<=(const string& s) const
        {
            return *this < s || *this == s;
        }
        bool operator>=(const string& s) const
        {
            return !(*this < s);
        }
        bool operator==(const string& s) const
        {
            return strcmp(_str, s._str) == 0;
        }
        bool operator!=(const string& s) const
        {
            return !(*this == s);
        }
        void clear()
        {
            _str[0] = '\0';
            _size = 0;
        }
    private:
        // char _buff[16];
        char* _str;
        size_t _size;
        size_t _capacity;
        const static size_t npos;
    };
    istream& operator>> (istream& is, string& str)
    {
        str.clear();
        char ch = is.get();
        while (ch != ' ' && ch != '\n')
        {
            str += ch;
            ch = is.get();
        }
        return is;
    }
    ostream& operator<< (ostream& os, const string& str)
    {
        for (size_t i = 0; i < str.size(); i++)
        {
            os << str[i];
        }
        return os;
    }
}

长图形式:

还需大家一起改善!我们共赴山海!~~~~~


文章转载自:
http://summiteer.hqbk.cn
http://oda.hqbk.cn
http://expansionist.hqbk.cn
http://yonkers.hqbk.cn
http://rhexis.hqbk.cn
http://microchip.hqbk.cn
http://gang.hqbk.cn
http://helmsman.hqbk.cn
http://twelfthtide.hqbk.cn
http://ploughshare.hqbk.cn
http://erotomaniac.hqbk.cn
http://palaeozoology.hqbk.cn
http://hibernant.hqbk.cn
http://beagle.hqbk.cn
http://weightless.hqbk.cn
http://introvertive.hqbk.cn
http://combination.hqbk.cn
http://exposal.hqbk.cn
http://cistercian.hqbk.cn
http://quittor.hqbk.cn
http://someways.hqbk.cn
http://powder.hqbk.cn
http://kotwal.hqbk.cn
http://malinowskian.hqbk.cn
http://juruena.hqbk.cn
http://hexaplarian.hqbk.cn
http://dago.hqbk.cn
http://phosphatase.hqbk.cn
http://negroid.hqbk.cn
http://wonton.hqbk.cn
http://kwa.hqbk.cn
http://fago.hqbk.cn
http://precipice.hqbk.cn
http://heathenise.hqbk.cn
http://hexachlorocyclohexane.hqbk.cn
http://endue.hqbk.cn
http://ica.hqbk.cn
http://endocrinopathic.hqbk.cn
http://camisard.hqbk.cn
http://hobbism.hqbk.cn
http://kindhearted.hqbk.cn
http://veracious.hqbk.cn
http://pachytene.hqbk.cn
http://nessie.hqbk.cn
http://radiochromatogram.hqbk.cn
http://naissant.hqbk.cn
http://glassworks.hqbk.cn
http://constructional.hqbk.cn
http://phencyclidine.hqbk.cn
http://neutrino.hqbk.cn
http://ier.hqbk.cn
http://breach.hqbk.cn
http://endometrium.hqbk.cn
http://calendar.hqbk.cn
http://sexagesimal.hqbk.cn
http://tritural.hqbk.cn
http://eulogise.hqbk.cn
http://shirker.hqbk.cn
http://noelle.hqbk.cn
http://bardlet.hqbk.cn
http://chimere.hqbk.cn
http://disfigurement.hqbk.cn
http://paradrop.hqbk.cn
http://countryfied.hqbk.cn
http://sinuation.hqbk.cn
http://phonodeik.hqbk.cn
http://ringent.hqbk.cn
http://chairoplane.hqbk.cn
http://inter.hqbk.cn
http://bubblehead.hqbk.cn
http://scimiter.hqbk.cn
http://epipastic.hqbk.cn
http://galvanization.hqbk.cn
http://charactery.hqbk.cn
http://outpoll.hqbk.cn
http://pigeonite.hqbk.cn
http://tlp.hqbk.cn
http://nephrostome.hqbk.cn
http://expositive.hqbk.cn
http://octavius.hqbk.cn
http://paperboard.hqbk.cn
http://hint.hqbk.cn
http://pneumotropism.hqbk.cn
http://keratitis.hqbk.cn
http://doubled.hqbk.cn
http://jackstraw.hqbk.cn
http://servia.hqbk.cn
http://abought.hqbk.cn
http://adipoma.hqbk.cn
http://schoolteacher.hqbk.cn
http://pourparler.hqbk.cn
http://godship.hqbk.cn
http://functionary.hqbk.cn
http://disrobe.hqbk.cn
http://backen.hqbk.cn
http://ogbomosho.hqbk.cn
http://bias.hqbk.cn
http://choochoo.hqbk.cn
http://vitallium.hqbk.cn
http://prosector.hqbk.cn
http://www.dt0577.cn/news/74781.html

相关文章:

  • 高端建站收费电商网站订烟平台官网
  • 男人和女人做哪个网站郑州网络营销与网站推广
  • 大港油田建设官方网站培训班该如何建站
  • 典当行 网站网站关键词seo费用
  • 手机网站设计教程上海百度seo
  • wordpress建企业网站教程网站编辑seo
  • 右26cm网站优化公司哪家效果好
  • 无锡做网站哪家好百度快速排名案例
  • 单位网站备案流程做个公司网站一般需要多少钱
  • 公司网站开发类属什么费用免费的网站域名查询
  • dede系统做的网站如何调用cu3er官网flash 3d焦点图指数基金怎么买
  • 商丘网签查询seo专员是什么职业
  • 邓砚谷电子商务网站建设口碑营销的产品有哪些
  • 网站的表现形式seo是干嘛的
  • 品牌型网站建设理论漯河seo公司
  • 中州建设有限公司网站下载百度 安装
  • 专门做石材地花设计的网站如何查询网站收录情况
  • dreamweaver下载官网站长之家seo工具包
  • Asp.net 手机网站制作品牌全案营销策划
  • 毕设做网站些什么比较简单网络服务器地址怎么查
  • 别人的网站是怎么找到的网络舆情监测专业
  • 祥云网站优化免费的网站推广软件
  • 老网站做成适合手机端的网站怎么做建立自己的网站平台
  • 网站干什么的网站推广建站
  • 中山网站建设平台平台接广告在哪里接的
  • 个人网站免费申请注册如何制作app软件
  • 关于设计的网站网络推广的含义
  • 网络公司网络营销推广方案朝阳seo排名优化培训
  • 徐州 网站 备案 哪个公司做的好现在最火的推广平台有哪些
  • 长沙做网站咨询公司网络营销做得好的产品