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 ;
}

使用命名空间范围内的成员(变量、函数、类),需要使用 域操作符 ::

使用using指令

可以使用 using namespace 指令,这样在使用命名空间时就可以不用在前面加上命名空间的名称。这个指令会告诉编译器,后续的代码将使用指定的命名空间中的名称。

#include <iostream>
using namespace std; int main(){
count<<"hi c++" << endl;
return ;
}

数组

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[] = {,,,}
for(int s : scores){
std::cout << s << std::endl;
}
return ;
}

数组创建的几种方法:

int main(){
//数组类型 数组名称 [元素个数]{初始化列表} //1. 声明后再初始化
int scores [];
scores[] = ;
scores[] = ;
scores[] = ;
scores[] = ;
scores[] = ; //2. 声明并初始化
int scores []{,,,,}; int socres []{,}; //剩下的都会以0占位,只初始化了前两位 int socres []{}; // 表示10个长度的数组,每个元素都是0 //3. 自动推算数组大小
int socres[]{,,,,}; //数组长度没有指定,根据后面初始化长度来推断。
return ;
}

访问数组

#include <iostream>

int main(){

    //声明并初始化数组
int scores [] = {,,}; std::cout<<"数组的第一个元素是: "<< scores[]<<std::endl;
std::cout<<"数组的第二个元素是: "<< scores[]<<std::endl;
std::cout<<"数组的第三个元素是: "<< scores[]<<std::endl; //越界,不会报错,但是输出内容不是我们想看到的
std::cout<<"数组的第一个元素是: "<< scores[]<<std::endl; //修改指定位置的元素
scores[] = ; return ;
}

遍历数组

c++的数组,并没有提供获取长度的方法,所以不能直接遍历。一种是直接指定遍历的长度,一种是通过代码计算出数组的长度 ,一种是使用c++11提供的基于范围的for循环

#include <iostream>

int main(){
//定义数组
int scores[]{,,,,,,}; //直接指定数组
for(int i = ; i < ; i++){
std::cout << scores[i] << std::endl;
} //手动计算数组长度
int length = sizeof(scores) / sizeof(int);
for(int i = ; i < length; i++){
std::cout << scores[i] << std::endl;
} //+++++++++++++++++++++++++++++++++++++++++++++++++++ //c++11 提供的for循环
for(int score : scores){
std::cout <<cores[i] << std::endl;
}
return ;
}

多维数组

数组里面的元素存储的还是数组,即可称之为多维数组。二维数组是常见的多维数组,再多维度的数组阅读起来就稍微有点复杂了。二维数组的操作实际上实际上和一维数组并没有多大区别。

 // list01[][] 第一个[]代表有几个一维数组   第二个[]代表一维数组有多少个元素,选取一维数组中最多的元素个数
int list01[][] = {
{,,,,5,6},
{,,,,,}
};

c++ 第二天 命名空间、数组的更多相关文章

  1. 第二章 jQuery数组和字符串

    章节内容: 1.利用数组在列表中显示名字 (1)利用数组显示名字列表--join()方法 (2)从数组中获取名字并追加到有序列表--each()方法 (3)利用HTML元素创建数组和计算数组长度--g ...

  2. execve(".. ",[".. ",".. "],[/* ..*/])第二个 参数 数组硬传

    strace.第一次跟踪点东西的启动. 第一次看见..execve(".. ",[".. ",".. "],[/* ..*/]) 第二个 参 ...

  3. Java第二次作业——数组和String类

    Java第二次作业--数组和String类 学习总结 1.学习使用Eclipse关联jdk源代码,查看String类的equals()方法,截图,并学习其实现方法.举例说明equals方法和==的区别 ...

  4. 20190922 On Java8 第二十一章 数组

    第二十一章 数组 一等对象 对象数组和基元数组在使用上是完全相同的.唯一的不同之处就是对象数组存储的是对象的引用,而基元数组则直接存储基本数据类型的值. 多维数组 Array.deepToString ...

  5. 为什么我要放弃javaScript数据结构与算法(第二章)—— 数组

    第二章 数组 几乎所有的编程语言都原生支持数组类型,因为数组是最简单的内存数据结构.JavaScript里也有数组类型,虽然它的第一个版本并没有支持数组.本章将深入学习数组数据结构和它的能力. 为什么 ...

  6. Java第二次作业--数组和String类

    Deadline: 2017-3-28 23:00 一.学习要点 认真看书并查阅相关资料,掌握以下内容: 掌握基本数据类型和引用数据类型的区别 理解对象的生成与引用的关系 掌握构造方法的重载 掌握St ...

  7. 剑指offer第二版-3.数组中重复的数

    面试题3:数组中重复的数 题目要求: 在一个长度为n的数组中,所有数字的取值范围都在[0,n-1],但不知道有几个数字重复或重复几次,找出其中任意一个重复的数字. 解法比较: /** * Copyri ...

  8. 【C语言探索之旅】 第二部分第三课:数组

    内容简介 1.课程大纲 2.第二部分第三课: 数组 3.第二部分第四课预告:字符串 课程大纲 我们的课程分为四大部分,每一个部分结束后都会有练习题,并会公布答案.还会带大家用C语言编写三个游戏. C语 ...

  9. 《PHP数组函数》笔记

    ① in_array() 检查数组中是否存在某个值;有两个参数,第一个参数是要查找的值,第二个参数是数组名,返回值为布尔,找到则ture否则false; ② array_search 在数组中搜索给定 ...

随机推荐

  1. 每天一个LINUX命令(pwd)

    每天一个LINUX命令(pwd) 基本信息 pwd: /bin/pwd,显示当前路径的绝对路径         语法:pwd 应用程序位置     which pwd PWD作用 pwd --help ...

  2. vs2017+opencv3.4.0的配置方法

    1.尝试了这个博客的方法: https://blog.csdn.net/u014574279/article/details/50909425/ 结果: 无法打开文件“opencv_ml2410d.l ...

  3. C语言学习笔记第一章——开篇

    本文章B站有对应视频 (本文图片.部分文字引用c primer plus) 什么是C语言 顾名思义,c语言是一门语言,但是和我们所讲的话不同,它是一门编程语言,是为了让机器可以听懂人的意思所以编写的一 ...

  4. DP没入门就入土

    写在前面 记录最近刷的DP题 以及 打死都不可能想到状态设计DP系列 汇总 洛谷 P6082 [JSOI2015]salesman 树形\(\texttt{DP}\) + 优先队列 比较容易看出来这是 ...

  5. requests库入门笔记1

    1.使用requests库发送请求,fiddler无法抓到包:使用浏览器请求相同的url,可以抓到包 在请求参数中添加 proxies参数,如下: proxies = { 'http': 'http: ...

  6. Linux多任务编程之五:exit()和_exit()函数(转)

    来源:CSDN  作者:王文松   转自:Linux公社 ----------------------------------------------------------------------- ...

  7. 用nodejs实现向文件的固定位置插入内容

    往文件的固定的行写入数据: 需要用到时nodejs的fs模块和path模块 用到fs模块的方法 readFileSync & writeFileSync : readFileSync 是读取文 ...

  8. scrapy 基础组件专题(三):爬虫中间件

    一.爬虫中间件简介 图 1-1 图 1-2 开始这一张之前需要先梳理一下这张图, 需要明白下载器中间件和爬虫中间件所在的位置 下载器中间件是在引擎(ENGINE)将请求推送给下载器(DOWNLOADE ...

  9. 3dTiles 数据规范详解[4.1] b3dm瓦片二进制数据文件结构

    B3dm,Batched 3D Model,成批量的三维模型的意思. 倾斜摄影数据(例如osgb).BIM数据(如rvt).传统三维模型(如obj.dae.3dMax制作的模型等),均可创建此类瓦片. ...

  10. 学习Java8系列-Lambda

    Lambda演进 小王在公司正在开发一个学生管理系统,产品经理向他提出一个需求,要筛选出年龄大于15的学生,于是小王写出了以下代码:     public static List<Student ...