【现代C++】auto关键字

本文详细介绍了C++11引入的auto关键字如何简化代码,包括变量类型推导、函数返回类型推导、范围for循环、STL容器和Lambda表达式中的使用,以及在处理复杂类型表达式时的优势。
摘要由CSDN通过智能技术生成

在这里插入图片描述

自C++11起,auto关键字允许编译器自动推导变量的类型,这简化了代码编写,特别是在处理复杂类型时。以下是auto的几种用法及相应的示例代码:

1. 基本变量类型推导

使用auto可以自动推导局部变量的类型。

auto x = 5; // x 被推导为 int
auto y = 3.14; // y 被推导为 double
auto z = "hello"; // z 被推导为 const char*

2. 在函数返回类型中使用

C++14进一步扩展了auto的用途,允许在推导函数返回类型时使用。

auto add(int x, int y) {
    return x + y;
}
// 返回类型被推导为 int

3. 在范围基于的for循环中使用

auto在范围基于的for循环中特别有用,可以自动推导集合元素的类型。

std::vector<int> vec = {1, 2, 3, 4};
for (auto num : vec) {
    std::cout << num << std::endl; // num 被推导为 int
}

4. 与STL容器一起使用

在使用STL容器时,auto可以简化迭代器的类型声明。

std::map<std::string, int> map = {{"one", 1}, {"two", 2}};
for (auto it = map.begin(); it != map.end(); ++it) {
    std::cout << it->first << " => " << it->second << std::endl;
}
// it 被推导为 std::map<std::string, int>::iterator

5. 在Lambda表达式中使用

auto可用于推导Lambda表达式的参数类型。

auto lambda = [](auto x, auto y) {
    return x + y;
};
// lambda 可以接受任意类型的参数

6. 用于类型复杂的表达式

当表达式类型复杂或难以手动编写时,auto可以大幅简化代码。

std::map<std::string, std::vector<int>> complexMap;
// 使用auto简化迭代器类型的声明
for (auto& pair : complexMap) {
    std::cout << pair.first << ": ";
    for (auto num : pair.second) {
        std::cout << num << " ";
    }
    std::cout << std::endl;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值