c++入门指南
c++入门指南
什么是C++?
C++(C and Plus +)是一种现代的、高效的、过程化的编程语言,由Bjarne Stroustrup于1983年开发出来,主要用于开发操作系统、网络、游戏和嵌入式系统等应用程序。C++的语法简洁易懂,并且具有强大的功能和广泛的应用,因此在软件开发领域中得到了广泛的应用和支持。
第一步:安装C++
下载安装包
首先,我们需要在计算机上安装C++编译器。以下是几种常见的C++编译器和其下载地址:
- MinGW:https://mingw.org/
- GCC:https://gcc.gnu.org/
- ICC:https://eclipse.org/icpc
设置环境变量
安装完成后,我们需要在系统环境变量中添加C++的安装路径。具体操作步骤会因操作系统不同而有所差异,可以参考以下链接:
- Windows:https://msdn.microsoft.com/en-us/library/windows/desktop/ms724421(v=vs.85).aspx
- macOS:https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man1/gcc.1.html
安装依赖库
C++编译器和大部分C++库都需要用到一些标准库和第三方库。以下是一些常用的标准库和第三方库:
- Standard Template Library (STL):https://en.wikipedia.org/wiki/C++11_template_library
- Zlib:https://zlib.net/
- Boost:https://www.boost.org/
在安装这些库之前,需要先确定安装路径。例如,如果安装在/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库的使用,并能够进行进一步的实践。
- 介绍了使用C++语言进行STL库的使用,并给出了几个示例任务。通过使用STL库,我们可以轻松地进行数据的处理、排序、搜索、比较等操作。
- 通过使用STL库,我们可以快速地实现名称查找、字符串大小比较、字符串删除等一系列示例任务。
- 通过这些示例任务,我们可以更好地理解STL库的使用,并可以进行更进一步的实践。
- 建议大家在使用STL库时,要熟悉其相关的头文件和函数,并能够灵活运用它们来解决各种问题。
- 在进行STL库的使用时,可以使用STL容器和算法,也可以使用STL库提供的其他函数和算法来实现各种需求。
- 希望大家能够好好利用STL库,让它成为自己的编程利器。