标准库
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;
}
本站资源均来自互联网,仅供研究学习,禁止违法使用和商用,产生法律纠纷本站概不负责!如果侵犯了您的权益请与我们联系!
转载请注明出处: 免费源码网-免费的源码资源网站 » C++中常用的标志库
发表评论 取消回复