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. python字符串与文本操作(一)

    1.一个字符串分割为多个字段,但是分隔符 (还有周围的空格) 并不是固定的 #string 对象的split()方法只适应于非常简单的字符串分割情形,它并不允许有 多个分隔符或者是分隔符周围不确定的空 ...

  2. day02小程序配置

    附上微信小程序开发文档的网址:https://developers.weixin.qq.com/miniprogram/dev/reference/configuration/app.html 学技术 ...

  3. Python 简明教程 --- 21,Python 继承与多态

    微信公众号:码农充电站pro 个人主页:https://codeshellme.github.io 程序不是年轻的专利,但是,它属于年轻. 目录 我们已经知道封装,继承和多态 是面向对象的三大特征,面 ...

  4. Ticket Game CodeForces - 1215D 博弈题

    题目描述 Monocarp and Bicarp live in Berland, where every bus ticket consists of n digits (n is an even ...

  5. SimpleImputer 中fit和transform方法的简介

    sklearn.impute.SimpleImputer 中fit和transform方法的简介 SimpleImputer 简介 通过SimpleImputer ,可以将现实数据中缺失的值通过同一列 ...

  6. 什么是electron

    Electron 是什么 定义 Electron是一个能让你使用传统前端技术(Nodejs, Javascript, HTML, CSS)开发一个跨平台桌面应用的框架.这里所说的桌面应用指的是在Win ...

  7. JavaWeb基础(day11)

    HTML HTML是超文本标记语言.HTML就 是普通的文本文件,只不过在文本中的内容如果被一些 特殊的标签进行包裹就有了特殊的含义,这些被那些标签标记文本,就成了超文本. 网页的组成 网页的组成 H ...

  8. linux常用命令 总结

    最最常用的快捷键,Tab 键 ,自动补全功能, / 根目录 man 帮助手册:man cd ,查看cd的用法! cd 进入目录:ls -l 列表查看文件详细信息:pwd 当前路径: cp 复制 .rm ...

  9. Django框架08 /聚合查询、分组、F/Q查询、原生sql相关

    Django框架08 /聚合查询.分组.F/Q查询.原生sql相关 目录 Django框架08 /聚合查询.分组.F/Q查询.原生sql相关 1. 聚合查询 2. 分组 3. F查询和Q查询 4. o ...

  10. Python Ethical Hacking - WEB PENETRATION TESTING(3)

    CRAWLING SUMMARY Our crawler so far can guess: Subdomains. Directories. Files. Advantages: ->Disc ...