一、字符處理相關函數
- 大小寫判斷函數
- islower和isupper:是C++標準庫中的字符分類函數,用于檢查一個字符是否為小寫字母或大寫字母,需包含頭文件cctype.h(也可用萬能頭文件包含)。返回布爾類型值。例如:
#include <iostream>
#include <cctype.h>
int main() {
char c1 = 'a';
char c2 = 'A';
if (islower(c1)) {
std::cout << "is lowercase letter" << std::endl;}else {
std::cout << "not a lowercase letter" << std::endl;
}
if (isupper(c2)) {
std::cout << "is uppercase letter" << std::endl;
}else {
std::cout << "not a uppercase letter" << std::endl;
}
return 0;
}
- 大小寫轉換函數
- tolower和toupper:tolower(char c)可以將c轉換為小寫字母,如果c是小寫字母則不進行操作;toupper函數同理。例如:
#include <iostream>
int main() {
char c1 = 'A';char c2 = 'b';char lowercasec1 = tolower(c1);std::cout << c1 << "的小寫形式為:" << lowercasec1 << std::endl;char uppercasec2 = toupper(c2);std::cout << c2 << "的大寫形式為:" << uppercasec2 << std::endl;return 0;
}
- ASCII碼表轉換大小寫使用:c-'A'+'a';? ? ? ? c-'a'+'A';
- 字符1變成數字1 可以:'1'-'0'
?
二、排序相關函數
- sort函數
- 基本信息:sort函數包含在頭文件algorithm中(也可使用萬能頭文件),是一個函數模板,用于對指定范圍內的元素進行排序,使用的是快速排序(QuickSort)或者類似快速排序的改進算法,一般平均時間復雜度為O(nlogn)。
- 用法:sort(起始地址,結束地址的下一位,*比較函數)。例如:
#include <iostream> #include <algorithm> // #include <bits/stdc++.h> using namespace std; int main() { int a[1000]; int n; cin >> n; for (int i = 1; i <= n; i++) cin >> a[i]; sort(a + 1, a + n + 1); for (int i = 1; i <= n; i++) cout << a[i] << " "; return 0; }
- **自定義比較函數**:sort默認使用小于號進行排序,如果想要自定義比較規則,可以傳入第三個參數(可以是函數或lambda表達式)[3]()。
三、數學函數
- 常用數學函數:abs(求絕對值)、ceil(向上取整)、floor(向下取整)、sqrt(求平方根)、pow(冪運算)、log(對數運算)、exp(指數運算)、sin(正弦函數)、cos(余弦函數)、tan(正切函數)等。
四、字符串函數
- char類型相關:strlen(求字符串長度)、strcmp(比較兩個字符串)、strcpy(字符串復制)、strcat(字符串連接)、strstr(在一個字符串中查找另一個字符串)、isdigit(判斷字符是否為數字)、isalpha(判斷字符是否為字母)等。
- string類相關:.size()(獲取字符串長度,等同于length())、.empty()(判斷字符串是否為空)、.clear()(清空字符串)、.append()(追加字符串)、.insert()(插入字符串)、.erase()(刪除字符串中的字符)、.replace()(替換字符串中的字符)、.substr()(獲取子字符串)、.find()(查找字符或子字符串)、rfind()(從右向左查找字符或子字符串)、.compare()(比較字符串)、.c_str()(轉換為C風格字符串)、.stoi()(將字符串轉換為整型)、.stod()(將字符串轉換為雙精度型)、.to_string()(將數字轉換為字符串)等。
五、STL容器相關函數
- vector(動態數組)
- 使用push_back()添加元素,使用[]或at()訪問元素,使用size()獲取元素個數。
- deque(雙端隊列):暫未詳細提及用法。
- list(雙向鏈表)
- 使用push_back()和push_front()添加元素,使用begin()和end()訪問元素,使用size()獲取元素個數。
- set(集合)
- 紅黑樹結構,使用insert()添加元素,使用find()查找元素,使用size()獲取元素個數。
- map(映射):暫未詳細提及特殊用法。
- unordered_set(哈希表)
- 使用insert()添加元素,使用find()查找元素,使用size()獲取元素個數。
- unordered_map(哈希表):暫未詳細提及特殊用法。
六、其他函數
- 輸入輸出函數:例如iostream中的cin和cout用于基本的輸入輸出操作。
- memset、memcpy:用于內存的設置和復制操作。
- rand、time:rand用于生成隨機數,time可用于獲取時間(常與隨機數生成配合使用,如設置隨機數種子)。
- assert:用于在程序中進行斷言檢查,如果條件不滿足則終止程序。
- atoi:將字符串轉換為整型。
七、二分查找
前提是庫函數只能對數組進行二分查找,數組中的元素都是單調的。
binary_search(numbers.begin(),numbers.end(),target);函數確定序列中是否存在某元素,返回bool值。
未完待續