C++
命名空间
命名空间,也就是名称空间/名字空间,注意需要的头文件是 iostream ,而不是 iostream.h ,后者是旧版本的 C++ 头文件,并不支持命名空间。
为什么要使用命名空间?
考虑一种情况,当我们有两个人同名都叫小a,在同一个班里。当我们需要对它们进行区分我们必须使用一些额外的信息和它们的名字,比如这个区域,如果它们生活在不同的区域或者它们的母亲或父亲的名字,等等。
在C++应用程序中也会出现同样的情况。例如,您可能正在编写一些具有名为abc()函数的代码,并且还有另一个可用的库,它也具有相同的abc()函数。现在编译器无法知道您在代码中引用的abc()函数是哪个版本的。
名称空间(namespace)被设计来克服这个困难,并被用作额外的信息来区分类似的函数、类、变量等等,它们在不同的库中具有相同的名称。使用名称空间,您可以定义定义名称的上下文。本质上,名称空间定义了一个范围。
自定义命名空间
#include <iostream> //深圳的张三 namespace shenzhen{ string name = "张三"; } //武汉的张三 namespace wuhan{ string name = "张三"; } int main() { std::cout << shenzhen::name << std::endl; return 0; }
#include <iostream> using namespace std; int main(){ count<<"hi c++" << endl; return 0 ; }
数组
c++的数组和Python中的列表差不多,都是具有下标(索引),不同的是,Python中的列表可以进行增删改查,而c++中的数组只能进行修改、查询,而且Python中的一个列表中可以存储不同的数据类型,c++中的一个数组只能存储一种数据类型
Python的列表
# 列表可以存储多种数据类型 scores = [100,98,88,'zhangsan',True] for s in scores: print(s)
C++的数组
#include <iostream> int main() { // 下面一行报错, 因为 数组声明里面元素的数据类型为int, 别的数据类型不能 // int scores[] = {true,'a',90,88} int scores[] = {100,95,90,88} for(int s : scores){ std::cout << s << std::endl; } return 0 ; }
数组创建的几种方法:
int main(){ //数组类型 数组名称 [元素个数]{初始化列表} //1. 声明后再初始化 int scores [5]; scores[0] = 11; scores[1] = 22; scores[2] = 33; scores[3] = 44; scores[4] = 55; //2. 声明并初始化 int scores [5]{100,89,95,70,80}; int socres [10]{88,75}; //剩下的都会以0占位,只初始化了前两位 int socres [10]{0}; // 表示10个长度的数组,每个元素都是0 //3. 自动推算数组大小 int socres[]{22,33,44,55,66}; //数组长度没有指定,根据后面初始化长度来推断。 return 0 ; }
访问数组
#include <iostream> int main(){ //声明并初始化数组 int scores [] = {100,89,95}; std::cout<<"数组的第一个元素是: "<< scores[0]<<std::endl; std::cout<<"数组的第二个元素是: "<< scores[1]<<std::endl; std::cout<<"数组的第三个元素是: "<< scores[2]<<std::endl; //越界,不会报错,但是输出内容不是我们想看到的 std::cout<<"数组的第一个元素是: "<< scores[5]<<std::endl; //修改指定位置的元素 scores[0] = 66; return 0 ; }
遍历数组
c++的数组,并没有提供获取长度的方法,所以不能直接遍历。一种是直接指定遍历的长度,一种是通过代码计算出数组的长度 ,一种是使用c++11提供的基于范围的for循环
#include <iostream> int main(){ //定义数组 int scores[]{100,95,97,88,85,80,75}; //直接指定数组 for(int i = 0; i < 7; i++){ std::cout << scores[i] << std::endl; } //手动计算数组长度 int length = sizeof(scores) / sizeof(int); for(int i = 0 ; i < length; i++){ std::cout << scores[i] << std::endl; } //+++++++++++++++++++++++++++++++++++++++++++++++++++ //c++11 提供的for循环 for(int score : scores){ std::cout <<cores[i] << std::endl; } return 0 ; }
// list01[][] 第一个[]代表有几个一维数组 第二个[]代表一维数组有多少个元素,选取一维数组中最多的元素个数 int list01[2][6] = { {1,2,3,4,5,6}, {11,22,33,44,55,66} };