1 总述线性表是最简单且应用最广泛的一种数据结构,其基本特点是结构中各元素之间满足线性关系。所谓的线性关系是指数据元素之间存在一对一关系,即存在唯一的开始元素和唯一的终止元素。线性结构拥有两个特点:均匀性和有序性2 分类按底层存储数据的方式可以分为两种,其一是定长的顺序存储结构,即顺序表;其二是变长的线性存储结构,即链表。线性表的基本构成代码如下template<typename T> class List { // 清空线性表 virtual void clear() = 0; // 判断线性表是否为空 virtual bool isEmpty() = 0; // 获取线性表长度 virtual uint size() = 0; // 向线性表末尾添加元素 virtual bool append(const T &src) = 0; // 向线性表中间插入元素 virtual bool insert(uint pos, const T &src) = 0; // 移除某
最近在对别人的程序做可视化封装,稍微涉及到了一点正则表达式,有感而发,写下这篇。举个例子 匹配端口号,众所周知 端口号的范围是0-65535。但是端口0不常用,所以一般性认为端口号是从1-65535. 那我们应该如何用正则表达式匹配端口号呢?(省流:\b(6553[0-5]|655[0-2]\d|65[0-4]\d{2}|6[0-4]\d{3}|[1-5]\d{4}|[1-9]\d{0,3})\b)写正则表达式的第一步是分层,准确点来说是分类,这样会给你的书写带来极大地帮助,不然就是一团浆糊那么端口号可以简单分为以下几层第一层65530-65535第二层65500-65529第三层65000-65499第四层60000-64999第五层10000-59999第六层1000-9999第七层100-999第八层10-99第九层1-9是不是看着有点吓人?别慌,我们来简化一下,可以发现第六七八九层格式一样,所以我们可以化简一下,第六七八九合为一层,也就是1-9999于是我们最终得到了这张分层表第一层65530-65535第二层65500-65529第三层65000-65499第四层60000-
众所周知C++的STL里面提供了string类,这很大的方便了我们对字符串的处理而提到字符串就不得不提到字符串的比较,请看下面几段代码std::string str1 = "我是一个字符串"; std::string str2 = "我是一个字符串"; char c_str1[100] = {"我是一个字符串"}; char c_str2[100] = {"我是一个字符串"}; cout << "str1 == str2:" << ((str1 == str2) ? "true" : "false") << endl; cout << "str1 == c_str1:" << ((str1 == c_str1) ? "true" : "false") << endl; cout << "c_str