|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
numbers.TXT
- 时间:2019年11月20日22:18:43;
- 作用:仿照C++ string用来处理数字串的类;
- 构造函数:
- //默认构造
- numbers():numsLen(0), numsPtr(nullptr){}
- //使用C风格数字数组构造
- numbers(const tp *arr, const size_t arrSize);
- //可变参数构造
- numbers(std::initializer_list<tp> list);
- //拷贝构造
- numbers(const numbers<tp>& nums);
- ****************************************************
- 成员函数
- at():
- 按索引获取数字串的元素;
- 按索引修改元素的值;
- size():
- 获取对象的大小
- ****************************************************
- 重载运算符
- [](改)
- 安索引修改对象元素的值;
- +(增):
- 添加元素;
- 合并对象;
- -(删)
- 删除对象中指定的数据;
- 删除父对象中与子对象相同的数据;
- %(查)
- 判断对象是否包含某数据;
- 判断子对象是否父对象的子串;
- /(查):
- 返回数据在对象中出现的次数;
- 返回对象与对象相同的元素;
复制代码
numbers.h
- #ifndef NUMBERS_H
- #define NUMBERS_H
- #include <iostream>
- #include <initializer_list>
- template <typename tp>
- class numbers
- {
- private:
- size_t numsLen;
- tp *numsPtr;
- public:
- //1--默认构造
- numbers() : numsLen(0), numsPtr(nullptr) {}
- //2--使用C风格数字数组构造
- numbers(const tp *arr, const size_t arrSize);
- //3--可变参数构造
- numbers(std::initializer_list<tp> list);
- //4--拷贝构造
- numbers(const numbers<tp> &nums);
- /*--------------------------------------------------------*/
- //5--按索引获取元素;按索引修改元素的值
- tp &at(const size_t index) const;
- //6--对象的大小
- size_t const size() const;
- /*--------------------------------------------------------*/
- //7--重载下标运算符
- tp &operator[](const size_t index) const;
- //8--深度拷贝
- numbers<tp> &operator=(const numbers<tp> &nums);
- //9--重载流运算符<<
- friend std::ostream &operator<<(std::ostream &os, const numbers<tp> &nums)
- {
- size_t sz = nums.size();
- for (size_t i = 0; i < sz; i++)
- {
- os << nums[i] << " ";
- }
- return os;
- }
- /*--------------------------------------------------------*/
- //10--添加元素
- numbers<tp> operator+(const tp num) const;
- //11--合并对象
- numbers<tp> operator+(const numbers<tp> &nums) const;
- /*--------------------------------------------------------*/
- //12--判断数据在对象中存在
- bool operator%(const tp num) const;
- //13--判断子对象是否父对象的子串
- bool operator%(const numbers<tp>& nums) const;
- /*--------------------------------------------------------*/
- //14--返回数据出现的次数
- size_t operator/(tp num) const;
- //15--返回两个对象共同的元素
- numbers<tp> operator/(numbers<tp> &nums) const;
- /*--------------------------------------------------------*/
- //16--删除元素
- numbers<tp> operator-(const tp num) const;
- //17--删除父对象中与子对象中重复的元素
- numbers<tp> operator-(const numbers<tp> &nums) const;
- //18--按索引删除元素(数据必须是size_t类型)失败返回空串
- numbers<tp> operator-(const size_t index) const;
- /*--------------------------------------------------------*/
- ~numbers()
- {
- delete[] numsPtr;
- }
- };
- #endif
复制代码
numbers.cpp
=================================================================================
main.c
- #include "numbers.cpp"
- int main(int argc, char const *argv[])
- {
- numbers<int> a = {1}, b = {2}, c, z, d = {1, 2, 3}, e = {7, 9, 10}, f = {1,2,3,9,2,12};
- z = a + 2 + 3 + b + c + 4 + 5 + b + c;//测试+号重载,可以连加但必须数字串对象开头
- std::cout << z << std::endl;//测试<<
- std::cout<<z%1<<" "<<z%e<<" "<<z%f<<std::endl;//测试%重载,数字串对象必须在首位
- std::cout<<z/2<<"\n"<<z/f<<"\n"<<z/e<<std::endl;//测试\号重载,
- numbers<int> nums0 = {1,2,2,3,6,8,69,6,2,2,5,899};
- std::cout<<nums0<<std::endl;//测试-号重载,数字串必须对象在首位
- numbers<int> nums1;
- nums0 = nums0 - nums1;//
- std::cout<<"空串测试"<<nums0<<std::endl;
- nums0 = nums0 - 899;//
- std::cout<<"数字测试"<<nums0<<std::endl;
- nums0 = nums0 - (size_t)0;//
- std::cout<<"索引测试"<<nums0<<std::endl;
- nums0 = nums0 - z;//
- std::cout<<"非空对象测试(有相同元素)"<<nums0<<std::endl;
- nums0 = nums0 - e;//
- std::cout<<"非空对象测试(无相同元素)"<<nums0<<std::endl;
- return 0;
- }
复制代码
----------------------------------------------------------------------------------------
Microsoft Windows [版本 10.0.18363.476]
(c) 2019 Microsoft Corporation。保留所有权利。
E:\Users\admin\Documents\VScode>c:\Users\admin\.vscode\extensions\ms-vscode.cpptools-0.26.1\debugAdapters\bin\WindowsDebugLauncher.exe --stdin=Microsoft-MIEngine-In-n5ukogix.do5 --stdout=Microsoft-MIEngine-Out-c5k34mn0.wwi --stderr=Microsoft-MIEngine-Error-k43i2w1i.n55 --pid=Microsoft-MIEngine-Pid-mqrubay4.n0f --dbgExe=D:\MinGW\bin\gdb.exe --interpreter=mi
1 2 3 2 4 5 2
1 0 0
3
1 2 3 2
1 2 2 3 6 8 69 6 2 2 5 899
空串测试1 2 2 3 6 8 69 6 2 2 5 899
数字测试1 2 2 3 6 8 69 6 2 2 5
索引测试2 2 3 6 8 69 6 2 2 5
非空对象测试(有相同元素)6 8 69 6
非空对象测试(无相同元素)6 8 69 6
E:\Users\admin\Documents\VScode> |
|