用位向量實現集合抽象資料型別

2021-09-07 23:17:15 字數 1621 閱讀 9938

#include

#include

using namespace std;

const int defaultsize = 100;

class set

//析構函式

void makeempty()                //置空集合

// 把x加入到集合this中,也就是把位向量的第x個位置為1(x的範圍必須是0與maxsize之間)

// 如果第x個位已經為1,返回false,否則返回true

bool set::addmember(const int x)

return false;

}bool set::delmember(const int x)

return false;

}set& set::operator = (set& right)

return *this;

}set& set::operator + (set& right)

return *this;

}set& set::operator - (set& right)

return *this;

}set& set::operator * (set& right)

bool set::operator== (set& right)

bool set::contains(const int x)

bool set::subset(set& right)

return true;

}int main()

位運算相關:

位操作符可以處理某個數的個別的位,只針對位,思想和那些&&,||一樣  

&(與操作)      

|(或操作)  

^(異或操作)  

~(非操作,也叫補運算子,就是取反)  

除了~,其他的都可以和"="一起用,例如&=,  

移位操作符  

《將左值按位向左移動,>>將左值按位向右移動    

記住下面的式子就行了  

a<>x,[向右移動x個位]   可看作   a=a/(2^x)     a除以2的x   次方  

位向量應該是指,英文原意雖為「向量」,但在標準庫中一般稱為動態陣列。

這裡的「位」是指資料位,不是數字位。  

在c/c++裡,char是8位(1位元組),short是16位(2位元組),int、long和float是  

32位(4位元組),double是64位(8位元組),long   double是80位(10位元組)。  

舉例來說,2是二進位制10,2位;4是二進位制100,3位;65535是二進位制1111   1111   1111   1111,  

16位。無符號整型最高可到4,294,967,295,變成二進位制正好是32位。  

1<<27(1左移27位)   =   1乘以(2的27次方)=   134   217   728  

quiz1   |=   1   <<   27   →   quizl   =   quizl   |   (   1   <<   27   )   →   quizl   =   0   |   134   217   728   =    

134   217   728

抽象資料型別

本篇文章簡單的講解下表 棧 佇列。首先先了解一下什麼是抽象資料型別。它是這麼定義的 抽象資料型別 abstract data type,即adt 是帶有一組操作的一些物件的集合。那麼adt怎麼理解呢?首先你只需要記住表 集合 圖以及與他們各自的操作一起形成的物件都可以被看做抽象資料型別.這就跟整型 ...

抽象資料型別 表

資料結構與演算法分析.c 實現 總結 抽象資料型別 abstract data type,首先顧名思義,她是一種資料型別,就像整數 字元,類似於加減乘除,他有自己的操作,例如 並和查詢 並沒有什麼法則規定一定要有什麼操作,具體的看設計要求 每種資料型別的實現方式也是不同的,主要有 陣列實現和鍊錶實現...

抽象資料型別(ADT

說到抽象資料型別,那麼就得先提到資料型別 資料型別指的是乙個值的集合以及定義在這個集合上的一組操作 為什麼要有不同的資料型別呢 當我們計算1 1的時候,只需要很小的儲存空間,但是當我們去計算10000 100000的時候,所需要的空間就會大許多,那麼我們為了去區分這些類別的差異,就有了不同的資料型別...