代码拉取完成,页面将自动刷新
#pragma once
#include <iostream>
#include <cstdlib>
#include <cstring>
using namespace std;
const size_t DEFAULT_SIZE = 128;
class String
{
friend ostream& operator<<(ostream& os, const String& str);
friend bool operator==(const String& str1,const String& str2);
friend bool operator!=(const String& str1,const String& str2);
friend bool operator<(const String& str1,const String& str2);
friend bool operator<=(const String& str1, const String& str2);
friend bool operator>(const String& str1, const String& str2);
friend bool operator>=(const String& str1, const String& str2);
private:
char* mem_data_; // 字符数组
int length_; // 当前字符串长度
size_t size_; // 最大长度
public:
explicit String(size_t size = DEFAULT_SIZE);
explicit String(const char* mem_data);
// 拷贝构造函数
String(const String& str);
~String() { delete[] this->mem_data_; }
int length() const { return this->length_; }
size_t size() const { return this->size_; }
// 这个版本用于在 常量对象 上调用
// const MyString str("hello");
// char c = str[0]; // 可以读取 str[0],但不能修改
const char& operator[](size_t index) const;
// 这个版本用于在 非常量对象 上调用
// MyString str("hello");
// str[0] = 'H'; // 可以修改 str[0]
char& operator[](size_t index);
String& operator=(const String& src_str);
String& operator+=(String& str);
// 暴力匹配
int bruteForceMatch(const String& pattern, int offset) const;
int kmpMatchByCyberDash(const String& pattern, int offset) const;
int kmpMatch(const String& pattern, int offset) const;
// 求next数组
int* kmpNext() const;
// 求next数组(cyberdash版本)
int* kmpNextByCyberDash() const;
};
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。