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

网站项目流程呼和浩特网站运营公司

网站项目流程,呼和浩特网站运营公司,做一个网站要注意什么,在百度做广告多少钱类定义cppnamespace ym {class string {private:char* _str; // 字符串数据size_t _size; // 当前字符串长度size_t _capacity; // 当前分配的内存容量static const size_t npos -1; // 特殊值,表示最大可能位置public:// 构造函数和析构函数string(…

类定义

cpp

namespace ym {class string {private:char* _str;        // 字符串数据size_t _size;      // 当前字符串长度size_t _capacity;  // 当前分配的内存容量static const size_t npos = -1;  // 特殊值,表示最大可能位置public:// 构造函数和析构函数string(const char* str = "");string(const string& s);~string();// 迭代器支持typedef char* iterator;typedef const char* const_iterator;iterator begin();iterator end();// ... 其他成员函数};
}

核心功能实现

1. 内存管理

reserve() 函数

cpp

void string::reserve(size_t n) {if (n > _capacity) {char* str = new char[n + 1];  // 多分配1字节存放'\0'strcpy(str, _str);delete[] _str;_str = str;_capacity = n;}
}
push_back() 函数

cpp

void string::push_back(char ch) {if (_size == _capacity) {reserve(_capacity == 0 ? 4 : 2 * _capacity);  // 初始容量为4,之后每次翻倍}_str[_size++] = ch;_str[_size] = '\0';  // 确保字符串始终以'\0'结尾
}

2. 字符串操作

append() 函数

cpp

void string::append(const char* str) {size_t len = strlen(str);if (_size + len > _capacity) {reserve(max(_size + len, 2 * _capacity));  // 按需扩容}strcat(_str + _size, str);  // 追加字符串_size += len;
}
insert() 函数

cpp

void string::insert(size_t pos, const char* str) {assert(pos <= _size);size_t len = strlen(str);if (_size + len > _capacity) {reserve(_size + len);}// 向后移动字符memmove(_str + pos + len, _str + pos, _size - pos + 1);  // +1包含'\0'// 插入新内容memcpy(_str + pos, str, len);_size += len;
}

3. 运算符重载

赋值运算符

cpp

string& string::operator=(string s) {if (this != &s) {  // 防止自赋值delete[] _str;_str = new char[s._capacity + 1];strcpy(_str, s._str);_size = s._size;_capacity = s._capacity;}return *this;
}
比较运算符

cpp

bool operator<(const string& s1, const string& s2) {return strcmp(s1.c_str(), s2.c_str()) < 0;
}
// 其他比较运算符类似...

4. 流操作符

输出运算符

cpp

ostream& operator<<(ostream& out, const string& s) {for (auto ch : s) {  // 使用范围for循环out << ch;}return out;
}
输入运算符(优化版)

cpp

istream& operator>>(istream& in, string& s) {s.clear();const int N = 256;  // 缓冲区大小char buff[N];int i = 0;char ch;// 跳过前导空白while (in.get(ch) && isspace(ch)) {}// 读取直到遇到空白if (!in.eof()) {do {buff[i++] = ch;if (i == N - 1) {  // 缓冲区快满时buff[i] = '\0';s += buff;i = 0;}} while (in.get(ch) && !isspace(ch));// 处理剩余字符if (i > 0) {buff[i] = '\0';s += buff;}}return in;
}

关键设计点

  1. 内存管理

    • 使用new[]delete[]手动管理内存

    • 采用指数级扩容策略(初始4,之后每次翻倍)

    • 始终确保字符串以'\0'结尾

  2. 异常安全

    • 赋值运算符使用拷贝交换惯用法

    • 关键操作前进行断言检查

  3. 性能优化

    • 输入操作符使用缓冲区减少扩容次数

    • 使用memmovememcpy提高大块数据操作效率

  4. 标准兼容

    • 提供迭代器支持

    • 实现完整的比较运算符

    • 支持流操作符

使用示例

cpp

ym::string s1 = "Hello";
ym::string s2 = "World";s1 += " ";
s1 += s2;  // s1变为"Hello World"cout << s1 << endl;  // 输出: Hello Worldym::string s3;
cin >> s3;  // 读取输入
http://www.dtcms.com/a/448540.html

相关文章:

  • 做设计需要素材的常用网站有哪些网络运营的岗位职责及任职要求
  • 电子商务网站建设投资预算手机制作app教程
  • 专做ppt的网站四川大学官方网站规划建设处
  • 深圳网站制作公司流程图域名注册后网站建设
  • 做一个网站要多少钱google搜索关键词热度
  • 广告设计案例网站计算机网站建设论文.
  • 企业网站管理系统程序名称南阳建设网站哪家好
  • 建设监理工程公司网站wordpress如何编辑网页加代码
  • 网站的设计制作与维护ui设计师简历
  • 天蓝色系网站设计wp做网站需要多久
  • 网站框架文案如何构建网站平台
  • 分分彩做号网站嘉兴网站建设方案
  • 大良建网站织梦wordpress建站
  • 制作网页前为什么要建立站点如何卸载wordpress
  • 网上做问卷调查赚钱哪些网站好太原百度快速优化排名
  • 济南网站建设推广服务wordpress模板能修改吗
  • 建设电子商务网站所应用的技术肥城住房和城乡建设局网站
  • 网站怎么响应式布局已经有域名如何做网站
  • 重庆专业网站开发服务seo常用的工具
  • 北京创意设计协会网站旅游网站建设价格
  • 生活服务信息类网站建设php网站开发案例教程
  • 企业网站的推广方式p2p网上贷款网站建设方案.docx
  • 网站的原型怎么做网站推广活动方案
  • 重庆网站设计定制住房和城乡建设部的叉车证能用吗
  • 东城响应式网站建设网站设计需要什么专业
  • 温州网站改版公司哪家好soho hotel 酒店 wordpress主题
  • 网站文章来源seo邮件表头图片网站
  • 一起做网站潮汕网页制作自学教程
  • 网站制作免费软件广州建站公司有哪些
  • 如何成为 个网站新能源课件网站开发新能源