C++標準庫型別 bitset及其應用
bitset 物件用每一個bit位儲存0或1,可以用來標記存在或者不存在,位置下標和儲存內容組成一個key-value對。用bit標記的好處就是可以節省記憶體空間,特別是應用於海量資料處理中。
例如以下幾個問題:(1) 已知某個檔案內包含一些電話號碼,每個號碼為8位數字,統計不同號碼的個數 ;(2) 2.5億個整數中找出不重複的整數的個數,記憶體空間不足以容納這2.5億個整數;(3) 某人有8角的郵票5張,1元的郵票4張,1元8角的郵票6張,用這些郵票中的一張或若干張可以得到多少種不同的郵資?
以上3個問題的共同點都可以歸結為:在一大堆數中找出不重複的個數——去重複問題
問題(3)的源程式:
#include<iostream> #include<bitset> // bitset類庫宣告 using namespace std; int main() { const unsigned int a = 189; // 最大郵資188角 bitset<a> bitvec; // 生成bitset物件 int x = 0, y = 0, z = 0; for (x = 0; x <= 5; ++x){ for (y = 0; y <= 4; ++y){ for (z = 0; z <= 6; ++z){ bitvec[8 * x + 10 * y + 18 * z] = 1; } } } int count = 0; for (x = 0; x<a; ++x) if (bitvec[x]) count++; cout << "共有: " << count << " 種郵資組合" << endl; return 0; }
參考連結:
http://blog.csdn.net/yushuai007008/article/details/7466945
http://dongxicheng.org/structure/bitmap/
http://www.cplusplus.com/reference/bitset/bitset/
相關推薦
C++標準庫型別 bitset及其應用
bitset 物件用每一個bit位儲存0或1,可以用來標記存在或者不存在,位置下標和儲存內容組成一個key-value對。用bit標記的好處就是可以節省記憶體空間,特別是應用於海量資料處理中。 例如以下幾個問題:(1) 已知某個檔案內包含一些
C++標準庫中bitset型別
雖然在C++的基本型別中,似乎沒有二進位制這個重要的型別,但是在C++標準庫中卻提供了能夠處理二進位制位的有序集合型別,這就是bitset型別,使用該型別時需要先包含該標頭檔案並進行宣告: #include <bitset> using namespace st
C++標準庫型別-string
1:首先區分開C和C++中的string 解釋:C語言中的並沒有string型別(C語言連類都沒,當然沒有string),C中的有個string.h標頭檔案,這個標頭檔案只是包含對字串的處理,比如說strcat等函式。而C++中的string是一個標準庫型別,表示可變長的字元序列,而由於是標準庫
標準庫型別bitset型別
//標準庫bitset型別 //bitset標頭檔案:#include<bitset> //bitset的定義:bitset<位數> 變數名; //bitset的初始化方式: //bitset<n> b; b有n位,每位都為
C++標準庫bitset型別
bitset用於處理二進位制位集。是一種類模板。 #include<bitset> using std::bitsset 1. 定義和初始化 在定義bitset時,要明確bitset是多少位,須在尖括號中制定它的長度值。 bitset<
【C++ Primer】【學習筆記】【第三章】標準庫型別之:bitset型別
#include <iostream> #include <bitset> using namespace std; int main() { bitset<32> bitvec; int a = 0, b = 1; i
《隨筆十八》—— C++中的 “ 標準庫型別string ”
目錄 初始化 string 物件的方式 string 物件的操作 cin 和 getline 讀寫 string物件 string 的 size ()操作 和 string::size_type 型別 比較string物件
C++primer筆記-第3章 字串、變數和陣列(標準庫型別string)
標準庫string、vector都是對內建陣列型別的抽象,string支援變長的字串,vector表示可變長的集合。迭代器是string和vector的配套型別,常用於訪問string或者vector中的元素。 string作為標準庫的一部分,定義在名稱空間s
C++ primer讀書筆記 chapter3 標準庫型別
除第二章介紹的是C++的基本型別,本章將大致介紹一下C++定義的內容豐富的抽象資料庫型別標準庫。著重介紹一下sting、vector和bitset。 3.2標準庫string型別 1.string型別支援幾個建構函式。建構函式是一個特殊成員函式,定義如何初始化該型別的物件,以下是stri
C++ primer筆記 -標準庫型別
最重要的兩個標準庫型別:string和vector string 型別的輸入操作符: 1、讀取並忽略開頭所有的空白符 2、讀取字元直至再次遇到空白字元,讀取終止 string物件的基本操作: string s; s.empty() 如果為空返回true,不為空返回fals
C++ 標準庫 string型別(二)
C++ 標準庫 string型別(一) 一,string物件的操作 1,s.size() s.size()是描述string字元多少的,如下: #include<iostream> #i
C++ 標準庫 vector型別
C++ 標準庫 vector 型別 1,vector物件的定義和初始化 vector是一個類似於動態陣列的型別,對於vector的初始化,如下: vector<int> v1;//儲存in
C++ Primer 【第四版】第三章 標準庫型別
預設建構函式(default constructor)就是在沒有顯式提供初始化式時呼叫的建構函式。它由不帶引數的建構函式,或者為所有形參提供預設實參的建構函式定義。如果定義某個類的變數時沒有提供初始化式,就會使用預設建構函式。如果使用者定義的類中沒有顯式定義任何建構函式,編譯器就會自動為該類生成預設建構函式,
C++ Primer 4 第三章 標準庫型別
1. 名稱空間的 using 宣告 使用 using 宣告可以在不需要加字首 namespace_name:: 的情況下訪問名稱空間中的名字。using 宣告的形式如下: using namespace::name; 一個
Bit操作 和C++標準庫BitSet
關於 C實現資料的Bit 操作和C++ 標準庫 BitSet累的比較總結。 1,設定某位為1 unsigned char num = 10; // 1010 bit: from right to left const size_t pos = 2; nu
c++ primer第三章(標準庫型別)學習筆記
1.在使用標準庫提供的string物件的size方法獲取字串長度時,為了避免溢位,儲存一個string對像size的最安全方法就是 使用標準庫型別string::size_type,處於同樣的道理在定義索引變數時也要使用string::size_type。 2.stri
c++之標準庫型別string
標準庫型別string 表示可變長的字元序列,使用string型別必須首先包含string標頭檔案。 #include <string> using namesapce std; 讀取未知數量的物件 int main() {
c++基礎五---標準庫型別(string ,vector)
string型別 支援長度可變的字串 因為歷史原因以及為了與C語言相容,字串字面值與標準庫string型別不是同一種類型。這一點很容易引起混亂。 s.empty () 如果s為空串,則返回ture s.size() s[n] 返回s中位置為n的字元 size(
c++_標準庫型別string
一 標準庫型別 string 是可變長的字元序列,使用string型別需要: #include<string> using namespace std; or using std::string; 二 定義與初始化 直接初始化
C++ Primer 第三章 標準庫型別 筆記
C++ Primer 第三章 標準庫型別 標準庫型別是我之前沒有接觸過內容,不僅是這一章,整本書有很多東西對我來說都是新的,譚伯伯那本介紹的東西只是C++中的皮毛罷了。感覺到學習C++將是個無底洞。