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. 特殊方格棋盘【状压DP】

    特殊方格棋盘[状压DP] 讲真状压DP这个东西只不过是有那么亿丢丢考验心态罢了(确信) 先从板子题说起,另加一些基础知识 题目描述 在的方格棋盘上放置n 个车,某些格子不能放,求使它们不能互相攻击的方 ...

  2. 阿里巴巴java-数据库开发手册(2020泰山版)

    阿里巴巴编程规范.数据库命名规范 首先感谢阿里,在此我也分享给小伙伴们学习,下载地址如下: 链接:https://pan.baidu.com/s/19SLpiJmyNEIKuRscftRk9Q 提取码 ...

  3. 四维DP之方格取数

    题目描述 传送门 设有N*N的方格图(N<=20,我们将其中的某些方格中填入正整数,而其他的方格中则放入数字0.如下图所示(见样例): 某人从图的左上角的A(1,1) 点出发,可以向下行走,也可 ...

  4. BUUCTF-Crypyo-No.1

    我我我我我又来惹~~~~* MD5 flag{admin1} 看我回旋踢 凯撒密码 flag{5cd1004d-86a5-46d8-b720-beb5ba0417e1} Url编码 flag{and ...

  5. 用Kubernetes部署Springboot或Nginx,也就一个文件的事

    1 前言 经过<Maven一键部署Springboot到Docker仓库,为自动化做准备>,Springboot的Docker镜像已经准备好,也能在Docker上成功运行了,是时候放上Ku ...

  6. js返回上一页并刷新思路

    在网上找了很多办法,比如window.history.go(-1):window.history.go(0): 试了下根本没用(不知道是不是我哪里写错了),想着在上一个页面写一个关闭页面并刷新的方法, ...

  7. 解决android studio 文本乱码问题

    下面图片,部分字体,有一些中文字符无法显示,可选择提交保存,立即可看到效果,不喜欢就再换一个合适的字体.

  8. mysql numeric

    tinyint  1个字节 smallint 2个字节 mediumint 3个字节 int 4个字节 bigint 8个字节

  9. requests接口自动化6-Body里json格式数据形式的post请求:json

    Body里json格式数据形式的post请求:用json传参 fiddler里请求响应内容: 传递的json数据 [{"stepId":"0","ca ...

  10. window10下启动vue项目具体步骤

    1. 安装nodejs 直接去nodejs官方网站下载安装包(https://nodejs.org/zh-cn/) 然后在cmd窗口里面输入 node -v 可以检测出来nodejs是否在全局环境下安 ...