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. MVC中model、dao、view、controlller、service之间的关系

    Model:是事物的模型,如Person.java,定义人的属性行为.pojo,OR maping,持久层 Dao:是持久化操作代码编写处,与数据库对接,如对Person进行增删改查. Service ...

  2. Java基础笔记01-02-03-04

    一.今日内容介绍 1.Java开发环境搭建 2.HelloWorld案例 3.注释.关键字.标识符 4.数据(数据类型.常量) 01java语言概述 * A: java语言概述 * a: Java是s ...

  3. 02 . SaltStack高级用法(Python API)

    Python API简单使用 第一条命令 /usr/bin/salt默认使用的接口是LocalClient,该接口只能在salt master上使用 >>> import salt. ...

  4. setTimeout还有第三个参数

    今天才发现setTimeout还有第三个参数. for (var i = 0; i< 10; i++){ setTimeout((i) => { console.log(i); }, 10 ...

  5. DVWA学习记录 PartⅢ

    CSRF 1. 题目 CSRF,全称Cross-site request forgery,翻译过来就是跨站请求伪造,是指利用受害者尚未失效的身份认证信息(cookie.会话等),诱骗其点击恶意链接或者 ...

  6. Hadoop基础(二):从Hadoop框架讨论大数据生态

    1 Hadoop是什么 2 Hadoop三大发行版本 Hadoop三大发行版本:Apache.Cloudera.Hortonworks. Apache版本最原始(最基础)的版本,对于入门学习最好. C ...

  7. Maven 专题(六):Maven核心概念详解(二)

    5 仓库 5.1 分类 [1]本地仓库:为当前本机电脑上的所有 Maven 工程服务.[2]远程仓库:        (1)私服:架设在当前局域网环境下,为当前局域网范围内的所有 Maven 工程服务 ...

  8. Java并发编程实践

    最近阅读了<Java并发编程实践>这本书,总结了一下几个相关的知识点. 线程安全 当多个线程访问某个类时,不管运行时环境采用何种调度方式或者这些线程将如何交替执行,并且在主调代码中不需要任 ...

  9. CentOS开机启动不了修复

    1,如果启动时进度条,先修改为日志启动 启动后快速按任何键(Enter除外)进入如下界面 在按e进入 选择第二个选项卡 在按e进入将红色部分 rhgb quiet 删除,然后按Enter,在按b重启 ...

  10. Ethical Hacking - NETWORK PENETRATION TESTING(22)

    MITM - Wireshark WIreshark is a network protocol analyser that is designed to help network administa ...