最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

c++模板自定義數(shù)組

 更新時間:2022年03月21日 11:39:27   作者:無痕戀雪  
這篇文章主要介紹了c++模板自定義數(shù)組,通過制造通用模板,創(chuàng)建自定義的數(shù)組展開文章相關(guān)內(nèi)容,具有一的參考價值,需要的小伙伴可以參考一下

前言:

制造通用模板,創(chuàng)建自定義的數(shù)組,

一個數(shù)組,里面有這么幾個屬性,數(shù)組容量,數(shù)組元素個數(shù),數(shù)組本身內(nèi)存地址,這幾個數(shù)據(jù)都是定義私有類型,提供有參構(gòu)造,讓用戶可以構(gòu)造出這個數(shù)組對象。下面是有參構(gòu)造和拷貝構(gòu)造和析構(gòu)函數(shù)還有operator=重載的代碼

在前面類模板中成員函數(shù)創(chuàng)建有這個主意問題,最好的辦法就是把類模板寫在一個hpp的文件中,不要拆開寫成多個文件

1.自定義數(shù)組.hpp--文件

#pragma once
#include<iostream>
using namespace std;
#include<string>
template<class T>
class Myarry
{
public:
? Myarry() {};//自己創(chuàng)建有參構(gòu)造,編譯器就不提供無參構(gòu)造,所以必須自己寫一次無參構(gòu)造,即使是空實現(xiàn)也要寫!
? Myarry(int capacity)//有參構(gòu)造函數(shù)
? {
? ? this->capacity = capacity;
? ? this->size = 0;
? ? this->marry = new T[this->capacity];//把數(shù)組創(chuàng)建在堆區(qū)
? }
? ~Myarry()//析構(gòu)函數(shù)
? {
? ? if (this->marry !=NULL)
? ? {
? ? ? delete []this->marry;//析構(gòu)數(shù)組必須加[],否則會引發(fā)斷點
? ? ? marry = NULL;
? ? ? this->capacity = 0;
? ? ? this->size = 0;
? ? }
? }
? Myarry(const Myarry& arr)//拷貝構(gòu)造
? {
? ? this->capacity = arr.capacity;
? ? this->size = arr.size;
? ? this->marry = new T[arr.capacity];
? ? for (int i = 0; i < arr.size; i++)//把數(shù)據(jù)拷貝過來
? ? {
? ? ? this->marry[i] = arr->marry[i];
? ? }
? }
? //等號賦值
? Myarry& operator=(const Myarry& arr)
? {
? ? if (this->marry != NULL)//如果有數(shù)據(jù)先清空,再賦值
? ? {
? ? ? delete[]this->marry;
? ? ? this->marry ?= NULL;
? ? ? this->size = 0;
? ? ? this->capacity = 0;
? ? }
? ? this->capacity = arr.capacity;
? ? this->size = arr.size;
? ? this->marry = new T[this->capacity];
? ? for (int i = 0; i < this->size; i++)//將數(shù)據(jù)進行拷貝
? ? {
? ? ? this->marry[i] = arr.marry[i];
? ? }
? ? return *this;
? }
? void pushback(const T&ptr)//尾加法
? {
? ? if (this->capacity == this->size)
? ? {
? ? ? cout << "容量已滿!" << endl;
? ? ? return;
? ? }
? ? this->marry[this->size] = ptr;
? ? this->size++;
? }
? void deleteback()//尾刪法
? {
? ? if (this->size == 0)
? ? {
? ? ? cout << "數(shù)據(jù)為零,沒有可刪數(shù)據(jù)!" << endl;
? ? }
? ? delete this->marry[this->size - 1];
? ? this->size--;
? }
? T & operator[](int index)//通過下標(biāo)訪問數(shù)組,并使它作為左值加&
? {
? ? if (index > this->capacity)
? ? {
? ? ? cout << "訪問越界!" << endl;
? ? ? exit(0);
? ? }
? ? return this->marry[index];
? }
? int gercapacity()//獲取數(shù)組容量
? {
? ? return this->capacity;
? }
? int getsize()//獲取數(shù)組元素個數(shù)
? {
? ? return this->size;
? }
private:
? T * marry;//數(shù)組
? int capacity;//數(shù)組容量
? int size;//數(shù)組元素個數(shù)
};

2.測試文件

#include "自定義數(shù)組.hpp"
class person
{
public:
? person()
? {
? ? this->age = 0;
? }
? int age;
? string name;
};
void text01()
{
? person p[4];
? p[0].age = 20;
? p[0].name = "張三";
? p[1].age = 0;
? p[1].name = "李四";
? p[2].age = 40;
? p[2].name = "王五";
? p[3].age = 80;
? p[3].name = "趙六";
? Myarry<person>pp(10);
? for (int i = 0; i < 4; i++)
? {
? ? pp.pushback(p[i]);
? }
? for (int i = 0; i < pp.getsize(); i++)
? {
? ? cout << pp[i].name<<pp[i].age<< endl;
? }
}
void text02()
{
? Myarry<int>inta(10);
? for (int i = 0; i < 5; i++)
? {
? ? inta.pushback(i);
? }
? for (int i = 0; i < inta.getsize(); i++)
? {
? ? cout << inta[i] << endl;
? }
}
int main()
{
? /*text02();*/
? text01();
? return 0;
}

到此這篇關(guān)于c++模板自定義數(shù)組的文章就介紹到這了,更多相關(guān)c++自定義數(shù)組內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 淺析C++中的多線程編程

    淺析C++中的多線程編程

    這篇文章主要為大家詳細(xì)介紹了C++中的多線程編程,包括創(chuàng)建線程、同步線程、傳遞數(shù)據(jù)給線程以及異常處理等方面,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-10-10
  • C語言之選擇分支語句詳解

    C語言之選擇分支語句詳解

    大家好,本篇文章主要講的是C語言之選擇分支語句詳解,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12
  • C語言從txt文件中逐行讀入數(shù)據(jù)存到數(shù)組中的實現(xiàn)方法

    C語言從txt文件中逐行讀入數(shù)據(jù)存到數(shù)組中的實現(xiàn)方法

    下面小編就為大家?guī)硪黄狢語言從txt文件中逐行讀入數(shù)據(jù)存到數(shù)組中的實現(xiàn)方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-12-12
  • C語言輕松實現(xiàn)掃雷小游戲

    C語言輕松實現(xiàn)掃雷小游戲

    掃雷是一款經(jīng)典的小游戲,這篇文章主要為大家詳細(xì)介紹了C語言輕松實現(xiàn)掃雷小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • C語言自定義類型的保姆級講解

    C語言自定義類型的保姆級講解

    這篇文章主要給大家介紹了關(guān)于C語言自定義類型的保姆級講解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • 顯示內(nèi)存狀態(tài)示例分享

    顯示內(nèi)存狀態(tài)示例分享

    這篇文章主要介紹了顯示內(nèi)存狀態(tài)示例,代碼簡單,下面直接看代碼,需要的朋友可以參考下
    2014-02-02
  • OpenCV中的cv::Mat函數(shù)將數(shù)據(jù)寫入txt文件

    OpenCV中的cv::Mat函數(shù)將數(shù)據(jù)寫入txt文件

    這篇文章主要介紹了OpenCVcv::Mat中的數(shù)據(jù)按行列寫入txt文件中,需要的朋友可以參考下
    2018-05-05
  • C++ Coroutine簡單學(xué)習(xí)教程

    C++ Coroutine簡單學(xué)習(xí)教程

    這篇文章主要為大家詳細(xì)介紹了C++ Coroutine的簡單學(xué)習(xí)教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • MFC程序中使用QT開發(fā)界面的實現(xiàn)步驟

    MFC程序中使用QT開發(fā)界面的實現(xiàn)步驟

    本文主要介紹了MFC程序中使用QT開發(fā)界面的實現(xiàn)步驟,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-12-12
  • C語言執(zhí)行時,程序控制臺輸出窗口 一閃而過問題及解決

    C語言執(zhí)行時,程序控制臺輸出窗口 一閃而過問題及解決

    這篇文章主要介紹了C語言執(zhí)行時,程序控制臺輸出窗口 一閃而過問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-11-11

最新評論

隆安县| 德钦县| 常熟市| 突泉县| 临颍县| 宣威市| 大名县| 阿克苏市| 浦东新区| 双城市| 保定市| 错那县| 蕉岭县| 扎兰屯市| 襄汾县| 佛坪县| 揭西县| 郧西县| 安新县| 炉霍县| 焦作市| 伊吾县| 佛冈县| 阳高县| 陇西县| 哈巴河县| 兰溪市| 白山市| 屯门区| 洪江市| 永济市| 梁平县| 长海县| 拉萨市| 灯塔市| 富宁县| 吕梁市| 紫金县| 鄯善县| 旌德县| 仁怀市|