美文网首页c++
c++入门指南

c++入门指南

作者: 吴佳浩 | 来源:发表于2023-05-18 11:37 被阅读0次

    c++入门指南

    什么是C++?

    C++(C and Plus +)是一种现代的、高效的、过程化的编程语言,由Bjarne Stroustrup于1983年开发出来,主要用于开发操作系统、网络、游戏和嵌入式系统等应用程序。C++的语法简洁易懂,并且具有强大的功能和广泛的应用,因此在软件开发领域中得到了广泛的应用和支持。

    第一步:安装C++

    下载安装包

    首先,我们需要在计算机上安装C++编译器。以下是几种常见的C++编译器和其下载地址:

    设置环境变量

    安装完成后,我们需要在系统环境变量中添加C++的安装路径。具体操作步骤会因操作系统不同而有所差异,可以参考以下链接:

    安装依赖库

    C++编译器和大部分C++库都需要用到一些标准库和第三方库。以下是一些常用的标准库和第三方库:

    在安装这些库之前,需要先确定安装路径。例如,如果安装在/usr/local/bin,则需要进入该目录执行以下命令进行安装:

    sudo apt-get install build-essential libx11-dev libxext-dev libfontconfig-dev libfreetype6-dev -y
    

    编写hello world程序

    在安装完C++编译器和库之后,我们可以尝试编写一个简单的C++程序。下面是一个用C++编写的“hello world”程序的示例代码:

    
    #include <iostream>
    
    int main()
    {
        std::cout << "Hello, world!\n";
        return 0;
    }
    

    在编译代码之前,我们需要使用C++编译器编译这个程序。以下是使用MinGW编译器编译程序的命令:

    g++ -o hello hello.cpp
    

    第二步:了解C++基础语法

    变量

    C++程序中使用变量的方式和其他编程语言类似。可以通过赋值来给变量赋值,例如:

    int a = 5;
    int b = 10;
    cout << "a = " << a << ", b = " << b << endl;
    

    数据类型

    C++支持的数据类型非常丰富,包括整型、浮点型、布尔型、字符型等。下面是一些常见的数据类型的示例代码:

    • int、float、bool:都是整型或浮点型
    • char:字符型
    • double、long double:双精度浮点型

    运算符和表达式

    C++支持各种运算符和表达式,例如:

    • 加法:+
    • 减法:-
    • 乘法:*
    • 除法:/
    • 取模:%
    • 关系运算符:==、!=、<、>、<=、>=、<>、and、or、not

    流程控制语句

    C++程序中也支持各种流程控制语句,例如:

    • if语句:if(条件){}
    • for语句:for(初始化;终止){}
    • while语句:while(条件){}

    函数

    在C++中,函数可以看作是一种封装了算法的方法。可以在程序中定义和调用函数,例如:

    • main
    #include <iostream>
    
    int main()
    {
        // 声明整型变量a、b、c
        int a = 5;
        int b = 10;
        int c = 20;
    
        // 输出变量a、b、c的值
        std::cout << "a = " << a << ", b = " << b << ", c = " << c << endl;
    
        return 0;
    }
    

    第三步:使用STL库

    定义容器

    C++标准模板库(STL)中提供了许多容器,例如:

    • 数组(vector):可以动态扩展长度的容器,支持随机访问、大小比较等操作
    • 向量(vector):与数组类似,但是元素顺序按照插入顺序排序
    • 字符串(string):可变长度的字符序列,支持单双引号等操作
    • 字符点(char_traits):用于字符处理的类库

    以下是一个使用STL库定义向量的示例代码:

    #include <iostream>
    #include <vector>
    #include <string>
    
    int main()
    {
        std::string s("Hello, world!");
        std::vector<std::string> v(s.begin(), s.end());
    
        // 访问元素
        std::cout << "s = " << s << ", v[0] = " << v[0] << endl;
    
        return 0;
    }
    

    使用数组

    数组也是STL库中的一种容器,可以动态扩展长度,并且可以随机访问和插入元素。下面是一个使用数组定义字符串并输出的示例代码:

    #include <iostream>
    #include <string>
    #include <array>
    
    int main()
    {
        std::string s = "Hello, world!";
        std::array<std::string, 3> v(s.begin(), s.end());
    
        // 访问元素
        std::cout << "s = " << s << ", v[0] = " << v[0] << ", v[1] = " << v[1] << endl;
    
        return 0
    

    第四步:继续完成程序

    以下是一个完整的完成程序的示例代码:

    
    #include <iostream>
    #include <string>
    #include <vector>
    #include <array>
    #include <memory>
    #include <algorithm>
    #include <functional>
    
    // 使用map容器实现快速查找
    std::map<std::string, int> countLetters(const std::string& str) {
        std::map<std::string, int> result;
        auto it = str.begin();
        auto end = str.end();
        while (it != end) {
            auto c = *it;
            if (std::string("abcdefghijklmnopqrstuvwxyz").find(c) != std::string::npos) {
                result[c]++;
            }
            ++it;
        }
        return result;
    }
    
    int main() {
        std::string s("hello, world!");
        auto cnt = countLetters(s);
        std::cout << "Letters in string: " << cnt.size() << std::endl;
    
        std::string str2("l", "o", "w", "o", "r", "l", "d");
        auto result = countLetters(str2);
        std::cout << "Letters in string2: " << result.size() << std::endl;
    
        // 使用数组实现快速查找
        std::array<int, 5> scores {{1, 4, 2, 3, 0}};
        auto it = std::max_element(scores.begin(), scores.end());
        std::cout << "Score of 3 in scores array: " << *it << std::endl;
    
        // 使用向量实现查找
        std::vector<int> scoresVec{{1, 4, 2, 3, 0}};
        auto it = std::upper_bound(scoresVec.begin(), scoresVec.end(), 3);
        if (it != scoresVec.end() && *it == 3) {
            std::cout << "Score of 3 in scores vector: " << scoresVec[*it] << std::endl;
        }
    
        // 使用map容器实现元素删除
        std::unordered_map<std::string, int> unsortedMap;
        unsortedMap[std::string("c")] = 0;
        unsortedMap[std::string("b")] = 1;
        unsortedMap[std::string("a")] = 2;
        int value = unsortedMap["b"];
        unsortedMap.erase(unsortedMap.find("b"));
        std::cout << "Value of b before deletion: " << value << std::endl;
        unsortedMap["d"] = value * 2;
        std::cout << "Value of b after deletion: " << unsortedMap["b"] << std::endl;
    
        // 使用optional容器实现元素删除
        std::optional<int> optValue;
        optValue = std::optional<int>(3);
        optValue = std::optional<int>(std::move(optValue));
        std::cout << "Value of optValue before deletion: " << *optValue << std::endl;
        *optValue = 3;
        std::cout << "Value of optValue after deletion: " << *optValue << std::endl;
    
        return 0;
    }
    

    上文内容的总结:

    本节以上就是使用C++语言进行STL库的使用,完成了一个名称查找、字符串大小比较、字符串删除等一系列示例任务的程序。这些示例程序能够帮助大家更好地理解STL库的使用,并能够进行进一步的实践。

    1. 介绍了使用C++语言进行STL库的使用,并给出了几个示例任务。通过使用STL库,我们可以轻松地进行数据的处理、排序、搜索、比较等操作。
    2. 通过使用STL库,我们可以快速地实现名称查找、字符串大小比较、字符串删除等一系列示例任务。
    3. 通过这些示例任务,我们可以更好地理解STL库的使用,并可以进行更进一步的实践。
    4. 建议大家在使用STL库时,要熟悉其相关的头文件和函数,并能够灵活运用它们来解决各种问题。
    5. 在进行STL库的使用时,可以使用STL容器和算法,也可以使用STL库提供的其他函数和算法来实现各种需求。
    6. 希望大家能够好好利用STL库,让它成为自己的编程利器。

    相关文章

      网友评论

        本文标题:c++入门指南

        本文链接:https://www.haomeiwen.com/subject/wwbwsdtx.html