标准库

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::pairstd::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;
}

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部