每日新知识

iota

示例 1:填充 std::vector 从 0 到 n-1

int main() {
    int n = 10; // 设置 n 的值
    std::vector<int> vec(n); // 创建一个大小为 n 的 vector
    // 使用 std::iota 填充 vector
    std::iota(vec.begin(), vec.end(), 0); // 从 0 开始填充// 输出结果
    for (int val : vec) {
        std::cout << val << " ";
    }
    std::cout << std::endl;
	return 0;
}

accumulate

示例 1:计算整数的总和

int main() {
    std::vector<int> numbers = {1, 2, 3, 4, 5};
    // 使用 std::accumulate 计算总和
    int sum = std::accumulate(numbers.begin(), numbers.end(), 0);
    std::cout << "Total sum: " << sum << std::endl; // 输出:Total sum: 15return 0;
}

示例 2:计算乘积

int main() {
    std::vector<int> numbers = {1, 2, 3, 4, 5};
    // 使用 std::accumulate 计算乘积
    int product = std::accumulate(numbers.begin(), numbers.end(), 1, std::multiplies<int>());
    std::cout << "Total product: " << product << std::endl; // 输出:Total product: 120return 0;
}

示例 3:使用自定义操作
您还可以提供自定义的操作,例如计算字符串的连接:

int main() {
    std::vector<std::string> words = {"Hello", " ", "World", "!"};
    // 使用 std::accumulate 连接字符串
    std::string result = std::accumulate(words.begin(), words.end(), std::string());
    std::cout << "Concatenated string: " << result << std::endl; // 输出:Concatenated string: Hello World!return 0;
}

static

写在函数中:静态局部变量。作用域为单次函数执行
写在函数外类内,静态成员变量。所有类的实例共享一个静态成员变量。它在类的所有对象之间是共享的
写在函数外类外的文件中:静态全局变量,作用域仅限于定义它的文件,其他文件无法访问。如果写在了头文件中,相当于包含这个头文件的文件中自定义了一个静态全局变量作用于本文件,即每个文件各得到了变量的副本,各文件中对这个变量的操作不影响原始头文件中的这个变量。
静态成员函数:静态成员函数是属于类而不是属于某个特定对象的函数。静态成员函数只能访问静态成员变量和静态成员函数。

for_each

#include <iostream>
#include <vector>
#include <algorithm>

int main() {
    // 创建一个包含一些整数的 vector
    std::vector<int> numbers = {1, 2, 3, 4, 5};

    // 输出原始 vector 的内容
    std::cout << "Original vector: ";
    for (const auto& num : numbers) {
        std::cout << num << " ";
    }
    std::cout << std::endl;

    // 使用 lambda 表达式将每个值改为 0
    std::for_each(numbers.begin(), numbers.end(), [](int& n) { n = 0; });

    // 输出修改后的 vector 的内容
    std::cout << "Modified vector: ";
    for (const auto& num : numbers) {
        std::cout << num << " ";
    }
    std::cout << std::endl;

    return 0;
}

Lambda

#include <iostream>

int main() {
    int x = 10;
    int y = 20;

    // 定义一个 lambda 表达式,按引用捕获外部变量 x 和 y
    auto modify = [&x, &y](int a) {
        x += a; // 修改 x
        y += a; // 修改 y
        std::cout << "x: " << x << ", y: " << y << std::endl;
    };

    modify(5); // 调用 lambda 表达式
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值