首先,我們要明白介面卡是幹什麼的?其實就是乙個介面轉換裝置,是得我們能用特定的方法去操作一些我們本來無法操作的東西。舉乙個例子,比如你的乙個裝置支援串列埠線,而你的電腦支援的是usb口,這時候,我們沒有必要重新買乙個支援usb的裝置,只需要一根串列埠轉usb口的小玩意,讓你的裝置能夠連線到usb插口上,而它就是介面卡。
不同場景下,由於不同的序列式容器其底層採用的資料結構不同,因此容器介面卡的執行效率也不盡相同。但通常情況下,使用預設的基礎容器即可。當然,我們也可以手動修改,具體的修改容器介面卡基礎容器的方法,請詳看下面自定義stack類演示:
以stack為例,容器介面卡的意思就是底層使用的容器不同,以stack使用vector陣列為例:
#pragma once
#include #include #include using namespace std;
class person
;
#include "person.h"
person::person(int age, string name)
person::person(const person & obj)
person::person(person && obj)
person & person::operator=(person obj)
ostream & operator<
在這裡我們一定要注意:拷貝建構函式的形式:一定要將拷貝構造成員函式定義為const屬性的
#include "stack.hpp"
#include "person.h"
#include #include using namespace std;
int main()
#include using namespace std;
#include #include #include template class stack
;
templateinline stack::stack(t obj)
templateinline stack::stack(vectorelement)
templateinline stack::stack(stack& obj)
templateinline void stack::push(t obj)
templateinline void stack::pop()
this->element.pop_back();
}
templateinline t stack::top()
return *(this->element.begin());
}
templateinline void stack::showinf()
for_each(this->element.begin(), this->element.end(), (t& obj) );
cout <
}
我們看到我們可以使用vector作為stack棧的底層容器進行各項操作,這是依據stack屬性而言的,比如:我想頻繁的入棧和出棧我們可以選擇vector容器,stack出棧入棧本質上來說就是在vector陣列尾部刪除插入元素。
但是queue佇列就不一樣了,queue是先入先出即從陣列第乙個元素前面插入元素,在最後乙個末尾元素刪除元素,這樣的操作顯然deque容器最為適合。
我們根據選擇不同的底層容器來進行程式效能的提高,這就是容器介面卡的作用。
容器介面卡 什麼是容器介面卡和用法
就是由基本的容器適配 改造 出來的那些容器,其它沒啥特殊的。比如stack,因為我們可以把stack理解成只是對vector deque或list的訪問加一點限制而已 只能從頭部訪問 所以沒有必要把stack做成乙個基本容器,使用其它的基本容器再稍微封裝改造一下就ok了,所以stack在stl中就只...
容器介面卡(棧容器介面卡 佇列容器介面卡)
我們已有的容器 比如vector list 這個容器支援的操作很多,比如插入,刪除,迭代器訪問等等。而我們希望這個容器表現出來的是棧的樣子 先進後出,入棧出棧等等,此時,我們沒有必要重新動手寫乙個新的資料結構,而是把原來的容器重新封裝一下,改變它的介面,就能把它當做棧使用了。c 定義了三種容器介面卡...
容器介面卡
容器介面卡通常是讓一種已存在的容器型別採用另一種不同的抽象型別的工作方式實現,一般情況下,它的初始化需要傳遞乙個容器作為引數,而它所有的操作也是在這個容器上實現的。標準庫提供了三種順序容器介面卡 stack queue priority queue,使用它們時需要包含 include 和 inclu...