c/c++ 模板与STL小例子系列<一 >自建Array数组
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c/c++ 模板与STL小例子系列<一 >自建Array数组,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2133字,纯文字阅读大概需要4分钟。
内容图文
![c/c++ 模板与STL小例子系列<一 >自建Array数组](/upload/InfoBanner/zyjiaocheng/1246/c6899488c5734460a047136cb2742d24.jpg)
c/c++ 模板与STL小例子系列<一> 自建Array数组
自建的Array数组,提供如下对外接口
方法 | 功能描述 |
---|---|
Array() | 无参数构造方法,构造元素个数为模板参数个的数组 |
Array(int length) | 有参数构造方法,构造元素个数为参数length个的数组 |
~Array() | 析构函数 |
int size() | 返回数组中元素的个数 |
T& get(int num) | 返回数组中指定下标的元素的引用 |
void set(T data, int num) | 设置指定下标元素的值 |
T& operator [] (int num) | 重载类型T的[]函数 |
下面代码用使用了私有元素size1,本来想用size命名,但是因为在公有方法里声明了int size()方法,编译不过去,所以起名为size1,感觉很奇怪。
my_array.h
ifndef __my_array__
#define __my_array__
template<typename T, int n>
class Array {
public:
Array();
Array(int length);
~Array();
T& get(int idx);
T& operator[](int idx);
void set(T data, int idx);
int size();
private:
T* pt;
int size1;
};
//构造函数
template<typename T, int n>
Array<T, n>::Array(){
pt = new T[n];
size1 = n;
}
//构造函数
template<typename T, int n>
Array<T, n>::Array(int length){
pt = new T[length];
size1 = length;
}
//析构函数
template<typename T, int n>
Array<T, n>::~Array(){
delete [] pt;
}
//取得数组元素的个数
template<typename T, int n>
int Array<T,n>::size(){
return size1;
}
//得到指定下标的元素
template<typename T, int n>
T& Array<T, n>::get(int num){
if(num >= size1 || num < 0){
//异常
}
else{
return pt[num];
}
}
//设定指定下标元素的值
template<typename T, int n>
void Array<T, n>::set(T data, int num){
if(num >= size1 || num < 0){
//异常
}
else{
pt[num] = data;
}
}
//重载元素类型的[]函数
template<typename T, int n>
T& Array<T, n>::operator[](int num){
if(num >= size1 || num < 0){
//异常
}
else{
return *(pt + num);
}
}
#endif
测试程序:
#include <iostream>
#include <string>
#include "my_array.h"
using namespace std;
int main(){
Array<int, 5> ary;
for(int i = 0; i < ary.size(); ++i){
ary.set(i * 10, i);
cout << ary.get(i) << " ";
cout << ary[i] << ", ";
}
cout << endl;
Array<string, 3> asr(4);
for(int i = 0; i < asr.size(); ++i){
asr.set("AAA", i);
cout << asr.get(i) << " ";
cout << asr[i] << ", ";
}
cout << endl;
return 0;
}
一 >自建Array数组' ref='nofollow'>c/c++ 模板与STL小例子系列<一 >自建Array数组
原文:https://www.cnblogs.com/xiaoshiwang/p/9545313.html
内容总结
以上是互联网集市为您收集整理的c/c++ 模板与STL小例子系列<一 >自建Array数组全部内容,希望文章能够帮你解决c/c++ 模板与STL小例子系列<一 >自建Array数组所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。