欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C++ Array容器的顯示和隱式實例化詳細介紹

 更新時間:2022年10月19日 09:32:23   作者:Peak@  
這篇文章主要介紹了C++中Array容器的隱式實例化和顯式實例化,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習吧

提到Array容器的隱式實例化和顯式實例化,不得不先說說Array的類模板。

類模板自己本身并不是一個類型和對象,模板必須進行實例化,實例化分為隱式和顯式兩種。

隱式實例化:在需要一個完整定義類型的代碼中,如果該類型是通過某個模板來提供,就會發(fā)生模板的隱式實例化。

顯式實例化:常用在模板的接口與實現(xiàn)分離的場合,顯式實例化效率較高。

下面創(chuàng)建了Array的類模板和實例化:

1、Array的類模板和隱式實例化

//arraytp.hpp
#pragma once
template<typename T, size_t N>
class Array
{
public:
	using size_type = size_t;
	//遍歷array
	void traverse() {
		for (const auto& e : arr) {
			std::cout << e << ' ';
		}
		std::cout << '\n';
	}
	T& operator[](size_type i) {
		return arr[i];
	}
private:
	T arr[N];
};
// Arrytest.cpp
#include <iostream>
#include"arraytp.hpp"
int main()
{
    //定義一個長度為9的Array數(shù)組容器
    Array<int, 9> ia;
    //給ia賦值
    for (int  i = 0; i < 9; i++)
    {
        ia[i] = i;
    }
    //遍歷ia
    ia.traverse();
    return 0;
}

運行結(jié)果:

2、Array類模板的接口和實現(xiàn)

顯式實例化:

//arraytp.hpp
#pragma once
template<typename T, size_t N>
class Array
{
public:
	using size_type = size_t;
	void traverse();
	T& operator[](size_type i);
private:
	T arr[N];
};
//m1.cpp
#include<iostream>
#include<string>
#include "arraytp.hpp"
template<typename T,size_t N>
//遍歷Array
void Array<T, N>::traverse() 
{
	for (const auto& e : arr) {
		std::cout << e << ' ';
	}
	std::cout << '\n';
}
template<typename T,size_t N>
T& Array<T, N>::operator[](size_type i) 
{
	return arr[i];
}
//在類模板中創(chuàng)建了三個顯式類型
template class Array<int, 9>;
template class Array<double, 9>;
template class Array<std::string, 9>;
// ArryDisplay.cpp
#include <iostream>
#include"arraytp.hpp"
void assignment();
int main()
{
    assignment();
}
void assignment()
{
	//定義一個長度為9的Array數(shù)組容器
	Array<double, 9> ia;
	//給ia賦值
	for (int i = 0; i < 9; i++) {
		ia[i] = i;
	}
	//遍歷
	ia.traverse();
}

運行結(jié)果:

在顯式實例化中是將模板的接口和實現(xiàn)分離了,同時在模板的實現(xiàn)中又三個顯式類型,顯式實例化還可以減少編譯時間和對象大小。

.hpp文件是.h頭文件和.cpp源文件的結(jié)合,.h文件放聲明,.cpp文件放實現(xiàn),而.hpp文件就是將聲明和實現(xiàn)放在一起。

size_t是標準C庫中定義的,它是一個基本的與機器相關(guān)的無符號整數(shù)的C/C++類型。

參考書籍:Accelerated C++和Cpp_Primer_5

到此這篇關(guān)于C++ Array容器的顯示和隱式實例化詳細介紹的文章就介紹到這了,更多相關(guān)C++ Array容器內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C語言中的搜索算法詳細解讀

    C語言中的搜索算法詳細解讀

    這篇文章主要介紹了C語言中的搜索算法詳細解讀,如果用樹構(gòu)建一個搜索樹,層層搜索關(guān)鍵字(的一個字母),搜索到后就是需要的描述,就會節(jié)約很多時間,需要的朋友可以參考下
    2023-10-10
  • VisualStudio2010安裝教程

    VisualStudio2010安裝教程

    這篇文章通過圖文并茂的形式給大家介紹VisualStudio2010安裝教程,在日常開發(fā)中是必不可少的搭建過程,感興趣的朋友跟隨小編一起看看吧
    2021-11-11
  • C語言中的const和free用法詳解

    C語言中的const和free用法詳解

    C語言中的const和C++中的const是有區(qū)別的,而且在使用VS編譯測試的時候,如果是C的話,請一定要建立一個后綴為C的文件,不要是CPP的文件。因為,兩個編譯器會有差別的。下面通過本文給大家分享C語言中的const和free用法,感興趣的朋友一起看看吧
    2017-04-04
  • C++實現(xiàn)圖形界面雙人五子棋游戲

    C++實現(xiàn)圖形界面雙人五子棋游戲

    這篇文章主要為大家詳細介紹了C++實現(xiàn)圖形界面雙人五子棋游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • FFmpeg實現(xiàn)變速播放的兩種方法總結(jié)

    FFmpeg實現(xiàn)變速播放的兩種方法總結(jié)

    這篇文章主要為大家詳細介紹了FFmpeg中實現(xiàn)變速播放的兩種方法,文中的示例代碼講解詳細,具有一定的學習價值,感興趣的可以了解一下
    2023-07-07
  • C語言數(shù)據(jù)結(jié)構(gòu)與算法之單鏈表

    C語言數(shù)據(jù)結(jié)構(gòu)與算法之單鏈表

    單鏈表是一種鏈式存取的數(shù)據(jù)結(jié)構(gòu),用一組地址任意的存儲單元存放線性表中的數(shù)據(jù)元素。本文將為大家介紹C語言中單鏈表的基本概念與讀取數(shù)據(jù)元素,需要的可以參考一下
    2021-12-12
  • C++如何獲取本機的IP地址

    C++如何獲取本機的IP地址

    這篇文章主要為大家詳細介紹了C++如何獲取本機IP地址小程序,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • C++實現(xiàn)數(shù)據(jù)文件存儲與加載

    C++實現(xiàn)數(shù)據(jù)文件存儲與加載

    這篇文章主要為大家詳細介紹了C++實現(xiàn)數(shù)據(jù)文件存儲與加載,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-06-06
  • C語言設(shè)計三子棋小游戲

    C語言設(shè)計三子棋小游戲

    這篇文章主要為大家詳細介紹了C語言設(shè)計三子棋小游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-04-04
  • C++虛函數(shù)表的原理與使用解析

    C++虛函數(shù)表的原理與使用解析

    對C++?了解的人都應該知道虛函數(shù)(Virtual?Function)是通過一張?zhí)摵瘮?shù)表(Virtual?Table)來實現(xiàn)的。簡稱為V-Table。本文就將詳細講講虛函數(shù)表的原理與使用,需要的可以參考一下
    2022-04-04

最新評論