標準庫
C++標準庫是一個強大的工具集,它包含了一組豐富的類和函數,可以幫助開發者進行各種操作,如輸入輸出、字符串操作、數據結構管理、算法實現等。以下是一些常用的C++標準庫及其使用方法。
1. 輸入輸出庫
<iostream>
用于標準輸入輸出操作。
#include <iostream>int main() {int a;std::cout << "Enter a number: ";std::cin >> a;std::cout << "You entered: " << a << std::endl;return 0;
}
<fstream>
用于文件輸入輸出操作。
#include <fstream>
#include <iostream>int main() {std::ofstream outFile("example.txt");outFile << "Hello, World!" << std::endl;outFile.close();std::ifstream inFile("example.txt");std::string content;inFile >> content;std::cout << "File content: " << content << std::endl;inFile.close();return 0;
}
2. 容器庫
<vector>
動態數組容器
#include <vector>
#include <iostream>int main() {std::vector<int> vec = {1, 2, 3, 4, 5};vec.push_back(6);for (int v : vec) {std::cout << v << " ";}std::cout << std::endl;return 0;
}
<list>
雙向鏈表容器。
#include <list>
#include <iostream>int main() {std::list<int> lst = {1, 2, 3, 4, 5};lst.push_back(6);for (int v : lst) {std::cout << v << " ";}std::cout << std::endl;return 0;
}
<map>
鍵值對容器。
#include <map>
#include <iostream>int main() {std::map<std::string, int> myMap;myMap["one"] = 1;myMap["two"] = 2;for (const auto& pair : myMap) {std::cout << pair.first << ": " << pair.second << std::endl;}return 0;
}
3. 算法庫
<algorithm>
常用算法函數。
#include <algorithm>
#include <vector>
#include <iostream>int main() {std::vector<int> vec = {3, 1, 4, 1, 5, 9};// 排序std::sort(vec.begin(), vec.end());for (int v : vec) {std::cout << v << " ";}std::cout << std::endl;// 查找if (std::binary_search(vec.begin(), vec.end(), 5)) {std::cout << "Found 5" << std::endl;}return 0;
}
4. 字符串庫
<string>
字符串操作。
#include <string>
#include <iostream>int main() {std::string str = "Hello";str += ", World!";std::cout << str << std::endl;std::string substr = str.substr(0, 5);std::cout << "Substring: " << substr << std::endl;return 0;
}
5. 數學庫
<cmath>
數學函數。
#include <cmath>
#include <iostream>int main() {double x = 3.14;std::cout << "sin(x) = " << sin(x) << std::endl;std::cout << "cos(x) = " << cos(x) << std::endl;std::cout << "sqrt(16) = " << sqrt(16) << std::endl;return 0;
}
6. 時間庫
<chrono>
時間處理。
#include <chrono>
#include <iostream>
#include <thread>int main() {auto start = std::chrono::high_resolution_clock::now();std::this_thread::sleep_for(std::chrono::seconds(1));auto end = std::chrono::high_resolution_clock::now();std::chrono::duration<double> duration = end - start;std::cout << "Elapsed time: " << duration.count() << " seconds" << std::endl;return 0;
}
7. 多線程庫
<thread>
多線程處理。
#include <thread>
#include <iostream>void threadFunction() {std::cout << "Thread is running" << std::endl;
}int main() {std::thread t(threadFunction);t.join(); // 等待線程完成return 0;
}
8. 智能指針庫
<memory>
智能指針管理。
#include <memory>
#include <iostream>int main() {std::unique_ptr<int> ptr = std::make_unique<int>(10);std::cout << "Unique pointer value: " << *ptr << std::endl;std::shared_ptr<int> sharedPtr = std::make_shared<int>(20);std::cout << "Shared pointer value: " << *sharedPtr << std::endl;return 0;
}
9. 其他有用的庫
<utility>
包含一些實用工具,如 std::pair
和 std::move
。
#include <utility>
#include <iostream>int main() {std::pair<int, std::string> p(1, "one");std::cout << "Pair: " << p.first << ", " << p.second << std::endl;int x = 10;int y = std::move(x);std::cout << "y: " << y << std::endl;return 0;
}
10、<atomic>
庫
<atomic>
庫提供了原子操作的類和函數,用于多線程環境下對共享變量進行安全的操作。
#include <atomic>
#include <iostream>
#include <thread>std::atomic<int> counter(0);void increment() {for (int i = 0; i < 10000; ++i) {counter++;}
}int main() {std::thread t1(increment);std::thread t2(increment);t1.join();t2.join();std::cout << "Counter value: " << counter << std::endl;return 0;
}
11、<mutex>
庫
<mutex>
庫提供了互斥鎖和其他同步原語,用于在多線程程序中實現線程安全的訪問控制
#include <mutex>
#include <iostream>
#include <thread>std::mutex mtx;void threadFunction() {std::lock_guard<std::mutex> lock(mtx);std::cout << "Thread is running" << std::endl;
}int main() {std::thread t(threadFunction);t.join();return 0;
}