c++ 常用頭文件


 

1.#include<iostream>

iostream 的意思是輸入輸出流。#include<iostream>是標准的C++頭文件,任何符合標准的C++開發環境都有這個頭文件。

2.#include<fsteram>
fstream是C++ STL中對文件操作的合集,包含了常用的所有文件操作。其中包含basic_ifstream,basic_ofstream,basic_fstream,basic_filebuf,ifstream,ofstream,fstream,filebuf,wifstream,wofstream, wfstream,wfilebuf 這些類。
其中ifstream用於輸入文件流的類,ofstream用於輸出文件流的類,fstream是文件流的類,filebuf是文件流緩沖區的類。在C++中,所有的文件操作,都是以流(stream)的方式進行的,fstream也就是文件流file stream。
其中basic修飾的是模板類,不帶w修飾的是用於窄字符(char)的類如ifstream,ofstream,fstream,filebuf,帶w修飾的類是用於寬字符(w_char)的類如wifstream,wofstream,wfstream,wfilebuf。
最常用的兩種操作為:
1).插入器(<<)
  向流輸出數據。比如說打開了一個文件流fout,那么調用fout<<"Write to file"<<endl;就表示把字符串"Write to file"寫入文件並換行。
2).析取器(>>)
  從流中輸入數據。比如說打開了文件流fin,那么定義整型變量x的情況下,fin>>x;就是從文件中讀取一個整型數據,並存儲到x中。

3.#include<chrono>  (參考:https://www.jianshu.com/p/1437e612a367)

在C++11中,<chrono>是標准模板庫中與時間有關的頭文件。該頭文件中所有函數與類模板均定義在std::chrono命名空間中。

std::chrono是在C++11中引入的,是一個模板庫,用來處理時間和日期的Time library。要使用chrono庫,需要include<chrono>,其所有實現均在chrono命名空間下。

std::chrono::duration:記錄時間長度的,表示一段時間,如1分鍾、2小時、10毫秒等。表示為類模板duration的對象,用一個count representation與一個period precision表示。例如,10毫秒的10為count representation,毫秒為period precision。

第一個模板參數為表示時間計數的數據類型。成員函數count返回該計數。第二個模板參數表示計數的一個周期,一般是std::ratio類型,表示一個周期(即一個時間嘀嗒tick)是秒鍾的倍數或分數,在編譯時應為一個有理數常量。
std::chrono::time_point:記錄時間點的,表示一個具體時間。例如某人的生日、今天的日出時間等。表示為類模板time_point的對象。用相對於一個固定時間點epoch的duration來表示。

std::chrono::clocks:時間點相對於真實物理時間的框架。至少提供了3個clock:

(1)、system_clock:當前系統范圍(即對各進程都一致)的一個實時的日歷時鍾(wallclock)。

(2)、steady_clock:當前系統實現的一個維定時鍾,該時鍾的每個時間嘀嗒單位是均勻的(即長度相等)。

(3)、high_resolution_clock:當前系統實現的一個高分辨率時鍾。

4. #include<algorithm>(參考:https://blog.csdn.net/bw9839/article/details/81054773)

#include<algorithm>:algorithm意為"算法",是C++的標准模版庫(STL)中最重要的頭文件之一,提供了大量基於迭代器的非成員模版函數。

非修改性序列操作(12個):
循環: 對序列中的每個元素執行某操作 for_each()
查找: 在序列中找出某個值的第一次出現的位置 find() , 利用底層元素的等於操作符,對范圍內的元素與輸入的值進行比較。當匹配時,結束搜索,返回該元素的一個 InputIterator 。
在序列中找出符合某謂詞的第一個元素 find_if()
在序列中找出一子序列的最后一次出現的位置 find_end()
在序列中找出第一次出現指定值集中之值的位置 find_first_of()
在序列中找出相鄰的一對值 adjacent_find()
計數: 在序列中統計某個值出現的次數 count()
在序列中統計與某謂詞匹配的次數 count_if()
比較: 找出兩個序列相異的第一個元素 mismatch()
兩個序列中的對應元素都相同時為真 equal()
搜索: 在序列中找出一子序列的第一次出現的位置 search()
在序列中找出一值的連續n次出現的位置 search_n()

修改性序列操作(27個):
復制: 從序列的第一個元素起進行復制 copy()
從序列的最后一個元素起進行復制 copy_backward()
交換: 交換兩個元素 swap()
交換指定范圍的元素 swap_ranges()
交換由迭代器所指的兩個元素 iter_swap()
變換: 將某操作應用於指定范圍的每個元素 transform()
替換: 用一個給定值替換一些值 replace()
替換滿足謂詞的一些元素 replace_if()
復制序列時用一給定值替換元素 replace_copy()
復制序列時替換滿足謂詞的元素 replace_copy_if()
填充: 用一給定值取代所有元素 fill()
用一給定值取代前n個元素 fill_n()
生成: 用一操作的結果取代所有元素 generate()
用一操作的結果取代前n個元素 generate_n()
刪除: 刪除具有給定值的元素 remove()
刪除滿足謂詞的元素 remove_if()
復制序列時刪除具有給定值的元素 remove_copy()
復制序列時刪除滿足謂詞的元素 remove_copy_if()
唯一: 刪除相鄰的重復元素 unique()
復制序列時刪除相鄰的重復元素 unique_copy()
反轉: 反轉元素的次序 reverse()
復制序列時反轉元素的次序 reverse_copy()
環移 :循環移動元素 rotate()
復制序列時循環移動元素 rotate_copy()
隨機 :采用均勻分布來隨機移動元素 random_shuffle()
划分 :將滿足某謂詞的元素都放到前面 partition()
將滿足某謂詞的元素都放到前面並維持原順序 stable_partition()


序列排序及相關操作(27個):
排序: 以很好的平均效率排序 sort()
排序,並維持相同元素的原有順序 stable_sort()
將序列的前一部分排好序 partial_sort()
復制的同時將序列的前一部分排好序 partial_sort_copy()
第n個元素: 將第n各元素放到它的正確位置 nth_element()
二分檢索: 找到大於等於某值的第一次出現 lower_bound()
找到大於某值的第一次出現 upper_bound()
找到:(在不破壞順序的前提下)可插入給定值的最大范圍 equal_range()
在有序序列中確定給定元素是否存在 binary_search()
歸並: 歸並兩個有序序列 merge()
歸並兩個接續的有序序列 inplace_merge()
有序結構上的集合操作: 一序列為另一序列的子序列時為真 includes()
構造兩個集合的有序並集 set_union()
構造兩個集合的有序交集 set_intersection()
構造兩個集合的有序差集 set_difference()
構造兩個集合的有序對稱差集(並-交) set_symmetric_difference()
堆操作: 向堆中加入元素 push_heap()
從堆中彈出元素 pop_heap()
從序列構造堆 make_heap()
給堆排序 sort_heap()
最大和最小: 兩個值中較小的 min()
兩個值中較大的 max()
序列中的最小元素 min_element()
序列中的最大元素 max_element()
詞典比較: 兩個序列按字典序的第一個在前 lexicographical_compare()
排列生成器: 按字典序的下一個排列 next_permutation()
按字典序的前一個排列 prev_permutation()

5.#include <unistd.h>

由字面意思,unistd.h是unix std的意思,是POSIX標准定義的unix類系統定義符號常量的頭文件,包含了許多UNIX系統服務的函數原型,例如read函數、write函數和getpid函數。

unistd.h含有的常量與函數:

ssize_t      read(int, void *, size_t);
int         unlink(const char *);
ssize_t     write(int, const void *, size_t);
int          usleep(useconds_t);
unsigned     sleep(unsigned);

int          access(const char *, int);
unsigned     alarm(unsigned);
int          chdir(const char *);
int          chown(const char *, uid_t, gid_t);
int          close(int);
size_t      confstr(int, char *, size_t);
void        _exit(int);
pid_t        fork(void);

NULL           // Null pointer
SEEK_CUR    // Set file offset to current plus offset.
SEEK_END    // Set file offset to EOF plus offset.
SEEK_SET    // Set file offset to offset.

6.#include<thread> 參考自:https://blog.csdn.net/sevenjoin/article/details/82187127)

C++11中加入了<thread>頭文件,此頭文件主要聲明了std::thread線程類。C++11的標准類std::thread對線程進行了封裝,定義了C++11標准中的一些表示線程的類、用於互斥訪問的類與方法等。應用C++11中的std::thread便於多線程程序的移值。
std::thread類成員函數:
(1)、get_id:獲取線程ID,返回一個類型為std::thread::id的對象。
(2)、joinable:檢查線程是否可被join。檢查thread對象是否標識一個活動(active)的可行性線程。缺省構造的thread對象、已經完成join的thread對象、已經detach的thread對象都不是joinable。
(3)、join:調用該函數會阻塞當前線程。阻塞調用者(caller)所在的線程直至被join的std::thread對象標識的線程執行結束。
(4)、detach:將當前線程對象所代表的執行實例與該線程對象分離,使得線程的執行可以單獨進行。一旦線程執行完畢,它所分配的資源將會被釋放。
(5)、native_handle:該函數返回與std::thread具體實現相關的線程句柄。native_handle_type是連接thread類和操作系統SDK API之間的橋梁,如在Linux g++(libstdc++)里,native_handle_type其實就是pthread里面的pthread_t類型,當thread類的功能不能滿足我們的要求的時候(比如改變某個線程的優先級),可以通過thread類實例的native_handle()返回值作為參數來調用相關的pthread函數達到目錄。This member function is only present in class thread if the library implementation supports it. If present, it returns a value used to access implementation-specific information associated to the thread.
(6)、swap:交換兩個線程對象所代表的底層句柄。
(7)、operator=:moves the thread object
(8)、hardware_concurrency:靜態成員函數,返回當前計算機最大的硬件並發線程數目。基本上可以視為處理器的核心數目。

另外,std::thread::id表示線程ID,定義了在運行時操作系統內唯一能夠標識該線程的標識符,同時其值還能指示所標識的線程的狀態。Values of this type are returned by thread::get_id and this_thread::get_id to identify threads.

有時候我們需要在線程執行代碼里面對當前調用者線程進行操作,針對這種情況,C++11里面專門定義了一個命名空間this_thread,此命名空間也聲明在<thread>頭文件中,其中包括get_id()函數用來獲取當前調用者線程的ID;yield()函數可以用來將調用者線程跳出運行狀態,重新交給操作系統進行調度,即當前線程放棄執行,操作系統調度另一線程繼續執行;sleep_until()函數是將線程休眠至某個指定的時刻(time point),該線程才被重新喚醒;sleep_for()函數是將線程休眠某個指定的時間片(time span),該線程才被重新喚醒,不過由於線程調度等原因,實際休眠實際可能比sleep_duration所表示的時間片更長。
7.#include<map>
(參考自:https://blog.csdn.net/superinzaghi747/article/details/52550738;
                       https://blog.csdn.net/qq_34621771/article/details/81164674)
map 是一種關聯容器, 提供一對一的關聯, 關聯的形式為: KEY—-VALUE(鍵值對),另外關鍵字不能重復。
map 也可看做是 關鍵字映射的集合, 即,map中不可出現重復的關鍵字,每條映射的關鍵字都是不同的。

1). map最基本的構造函數;
   map<string , int >mapstring;         map<int ,string >mapint;
   map<sring, char>mapstring;         map< char ,string>mapchar;
   map<char ,int>mapchar;            map<int ,char >mapint;
2). map添加數據;
   map<int ,string> maplive;  
   1.maplive.insert(pair<int,string>(102,”aclive”));
   2.maplive.insert(map<int,string>::value_type(321,”hai”));
   3, maplive[112]=”April”;//map中最簡單最常用的插入添加!
3).map中元素的查找:
   find()函數返回一個迭代器指向鍵值為key的元素,如果沒找到就返回指向map尾部的迭代器。        
   map<int ,string >::iterator l_it;; 
   l_it=maplive.find(112);
   if(l_it==maplive.end())
                cout<<”we do not find 112”<<endl;
   else cout<<”wo find 112”<<endl;
4).map中元素的刪除:
   如果刪除112;
   map<int ,string >::iterator l_it;;
   l_it=maplive.find(112);
   if(l_it==maplive.end())
        cout<<”we do not find 112”<<endl;
   else  maplive.erase(l_it);  //delete 112;
5).map中 swap的用法:
  Map中的swap不是一個容器中的元素交換,而是兩個容器交換;
6).map的sort問題:
  Map中的元素是自動按key升序排序,所以不能對map用sort函數;
7).   map的基本操作函數:
      C++ Maps是一種關聯式容器,包含“關鍵字/值”對
      begin()          返回指向map頭部的迭代器
      clear()         刪除所有元素
      count()          返回指定元素出現的次數
      empty()          如果map為空則返回true
      end()            返回指向map末尾的迭代器
      equal_range()    返回特殊條目的迭代器對
      erase()          刪除一個元素
      find()           查找一個元素
      get_allocator()  返回map的配置器
      insert()         插入元素
      key_comp()       返回比較元素key的函數
      lower_bound()    返回鍵值>=給定元素的第一個位置
      max_size()       返回可以容納的最大元素個數
      rbegin()         返回一個指向map尾部的逆向迭代器
      rend()           返回一個指向map頭部的逆向迭代器
      size()           返回map中元素的個數
      swap()            交換兩個map
      upper_bound()     返回鍵值>給定元素的第一個位置
      value_comp()      返回比較元素value的函數


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM