笔记:图以及cpp基础-程序员宅基地

技术标签: c++  笔记  开发语言  

1.头文件:

c一般用#include“stdio.h"

而cpp用的为#include "iostream" (简记ios+tream)

此外还有加一行using namespace std;

2.标准输入输出:

c实现:

scanf("%d",&a);

printf("%d/n",a);

cpp实现:

cin>>a cout<<a<<endl

简记为:输入>>,输出<<

cpp不用标明数据的类型,而c需要。在没有指定域时一般采取就近原则输出。

例如:

namespace A
{
    int a=10;
    namespace B
    {
        int a=20;                
    }
}

cout<<A::a<<endl;  //毋庸置疑输出的就是A中的int a=10;
cout<<A::B::a<<endl;//此处输出的为B中的int a=20;

3.同时存在相同名字的函数(函数重载)

在c语言中同名函数不能同时存在。而c++可以

定义:同一个作用域内,相同函数名,参数不同(类型不同,个数不同)可以构成函数重载(和返回值无关)

函数重载的定义:函数重载的原理是会进行函数名修饰。如int fun(int i,char a)和void fun(char a,int i)就可以构成函数重载,根据函数名修饰的原理我们可以得到_funic和 _funci两个经过修饰之后得到的函数名,在进行修饰后的函数名显然是不同的。

自我理解为:用参数类型添加了一个修饰,int就加i,char就加c。

4.缺省参数

cpp可以在定义时为参数进行一个赋值,只要它被初始化赋值那么在调用时可以不用传参哩。

#include "iostream"

using namespace std;

int Add (int a,int b = 20)
//有多个参数时int Add (int a,int b,int c = 30)
{
   return a+b;
}

int main()
{
   cout<<Add(10)<<endl;
   cout<<Add(10,30)<<endl;
}

5.指针(*)和引用(&)

指针:指针仍然是指向一个数据的地址。

引用:理解为新增一个该数据的别名,实际作用和该数据本身其实没区别。

简单举例为swap()函数

void swap(int &a,int &b)
{
    int temp=a;
    a=b;
    b=temp;
}

void swap(int *a,int *b)
{
    int temp=*a;
    *a=*b;
    *b=temp;
}

引用和指针的区别和联系

1.引用只能在初始化是引用一次,不能改变为再引用其他变量;而指针变量的值可变

2.引用必须指向有效的变量,而指针可以为空

3.相对而言,引用比指针更安全,指针比引用更灵活

图:

图的逻辑结构:多对多

图没有顺序存储结构,但可以用二维数组来表示元素之间的关系(邻接矩阵)

链式存储结构:因为图很难确定有几个指针,所以难以用链表表示,故采用多重链表(邻接表,邻接多重表,十字链表)

1.数组表示法(邻接矩阵法)

(1)建立一个顶点表(记录各个顶点的信息)

(2)建立邻接矩阵(表示各个顶点之间的关系)

例:设图A=(V,E)有n个顶点,则

顶点表Vexs【n】就建立n个元素的数组存放n个顶点。

图的邻接矩阵为一个二维数组,设为A.arcs【i】【j】(理解为两个顶点之间的关系)

如果存在一条弧或者一条边,则矩阵中记录【i】【j】为1

如若不存在的话则记录为0;

分析其一:无向图的邻接矩阵是对称的

分析其二:顶点i的度即为第i行和i列的“1”的个数,如果是无向图就只要考虑每一行“1”的个数。

完全矩阵:只有对角元素为0,其他元素全部为1。

无向邻接矩阵:

表示为:

有向邻接矩阵:

表示为:

有向的邻接矩阵:

第i行的含义:以节点vi为尾的弧(即出渡边)

第i列的含义:以节点vi为头的弧(即入度边)

有向的邻接矩阵不一定是对称的

简单的邻接矩阵实现(有向):

#include "iostream"
using namespace std;

int main()
{
    int v,e;
    
   cout<<"请输入节点个数:";
   cin>>v;
   
   cout<<"请输入边的个数:";
   cin>>e;
   
   int data_bian[v][2],Arcs[v][v]={0},Vexs[v]={0};
   
   for(int i=0;i<e;i++)
       cin>>data_bian[i][0]>>data_bian[i][1];   //输入节点的边
       
       
       for(int i=0;i<e;i++)
    Arcs[data_bian[i][0]][data_bian[i][1]]=1; //有弧就置1
       
    for(int i=0;i<v;i++)
        for(int j=0;j<v;j++)
            Vexs[i]+=Arcs[i][j]+Arcs[j][i];  //计算每一个节点的度
        
    
       
       return 0;
}

网(有权图)的邻接矩阵表示法:

即对边值进行另一种判定,有边就记录权值,没有边就记录为无穷大。

未完待续。。。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/fengbinbin6310/article/details/130117653

智能推荐

文件下载时文件后缀与contentType对应表_application/x-msdownload对应的文件类型-程序员宅基地

文章浏览阅读6.4k次,点赞2次,收藏9次。文件类型如下:".*"="application/octet-stream"".001"="application/x-001"".301"="application/x-301"".323"="text/h323"".906"="application/x-906"".907"="drawing/907"".a11"="application/x-a11""._application/x-msdownload对应的文件类型

系统更新及疑难处理-程序员宅基地

文章浏览阅读345次。系统更新及疑难处理利用WSUS部署更新程序微软公司的主要补丁类型nHotfix是针对某一个具体的系统漏洞或安全问题而发布的专门解决该漏洞或安全问题的小程序,通常称为修补程序n微软公司会及时地将软件产品中发现的重大问题以安全公告的形式公布于众,这些公告都有一个惟一的编号,即“MS”,如MS04-011n还有一种形式为KB(2003年4月份后用此编号)的编号,这个编..._允许来自internetmicrosoft更新服务位置的签名更新

【论文】ROS系统的无人小车自动跟随方案研究-程序员宅基地

文章浏览阅读3.7k次,点赞3次,收藏45次。本文基于ROS操作系统介绍了一种运动与跟随系统的设计及实现,该跟随系统包括以激光雷达进行全方位角度的距离测量,使用Python语言编写脚本,通过编写激光雷达话题的订阅以及运动话题的发布,完成对目标的运动控制以及对被跟随目标的感知和产生跟随相应的动作。本系统中无论被跟随目标位于跟随机器人的任何方位,均能实现机器人的跟随,无需额外的基站、标签等定位设施,可以减少整个跟随系统成本。基于ROS系统使开发简单快速,适用范围广,具有良好的可移植性和通用性。_ros系统的无人小车自动跟随方案研究

几十款游戏的简单分析_游戏分析-程序员宅基地

文章浏览阅读1.3k次。笔者曾在多个游戏平台上玩过众多游戏,包括fc红白游戏机游戏、网页游戏、单机游戏、客户端游戏、手游等。在游戏过程中,笔者常常从多个角度对游戏进行分析,包括游戏的优缺点、改进方法、数值设计、音效、画面等方面。本篇文章简要但关键地记录了笔者在游戏体验和策略分析方面的一些心得体会。综合以上所述,一款成功的游戏需要满足一些基本要素。首先,它必须是新颖的、有趣的、易于上手的,同时游戏数值、画面、音效等方面也要在合理区间。_游戏分析

circular waveguide_wr137 circular waveguide datasheet-程序员宅基地

文章浏览阅读1.3k次。 Figure 1 Bessel function of first kindFigure 2 Derivative of Bessel function of first kindFigure 3 E field of TE11 modeFigure 4 H field of TE11 modeFigure 5 E field w.r.t. time_wr137 circular waveguide datasheet

STM32之NB-IoT学习(一)——NB-IoT介绍_物联网lot学习(2)-程序员宅基地

文章浏览阅读892次,点赞8次,收藏13次。你的支持,我的动力;祝各位前程似锦,offer不断,步步高升!!!如果你觉得这些内容对你有帮助,可以+V:Vip1104z获取!!!(备注:嵌入式)你的支持,我的动力;祝各位前程似锦,offer不断,步步高升!!!更多资料点击此处获qu!!_nb-iot

随便推点

C语言最重要的知识点(复习、期末考)-程序员宅基地

文章浏览阅读1k次,点赞26次,收藏20次。C语言最重要的知识点(复习、期末考)

Windows11系统开机跳过联网全过程(详解)_跳过联网进入win11 需要设置密码-程序员宅基地

文章浏览阅读1.5k次,点赞3次,收藏7次。Windows11系统开机跳过联网全过程(详解)_跳过联网进入win11 需要设置密码

SpringBoot 整合RabbitMQ错误记录-程序员宅基地

文章浏览阅读336次。1. 控制台报错:Exception in thread "main" java.io.IOException…… Caused by: com.rabbitmq.client.ShutdownSignalException: connection error; protocol method: #method<connection.close>(r..._current message type not match with topic accept message types

【线性代数笔记】正交矩阵的性质-程序员宅基地

文章浏览阅读2w次,点赞16次,收藏81次。定义 设nnn阶矩阵AAA满足AAT=ATA=IAA^T=A^TA=IAAT=ATA=I,则称AAA为正交矩阵。定理1 设AAA,BBB是同阶正交矩阵,则:(1) det⁡(A)=±1\det(A)=\pm1det(A)=±1;(2) AT,A−1,A∗A^T,A^{-1},A^*AT,A−1,A∗均为正交矩阵;(3) ABABAB为正交矩阵。定理2 实方阵AAA为正交矩阵⟺\Longleftrightarrow⟺AAA的列/行向量组为标准正交向量组。证明提要:将AAA按列分块,考察ATA=I_正交矩阵的性质

AndroidStudio4.0 Layout界面预览设置等_android studio layout预览设置-程序员宅基地

文章浏览阅读3.9k次,点赞8次,收藏7次。这里写自定义目录标题AndroidStudio Layout和Drawable默认打开代码加预览AndroidStudio Layout和Drawable默认打开代码加预览AndroidStudio 3.6之后打开Layout和Drawable默认显示的只有预览页面,而不是代码加预览;选择File | Settings | Editor | Layout Editor可以修改默认显示代码加预览;直接上图:将右边Other Resources改成Split既可以实现代码加预览。效果如下:._android studio layout预览设置

<转载>Android 对sdcard操作-程序员宅基地

文章浏览阅读347次。其实就是普通的文件操作,不过还是有些地方需要注意。比如: 1.加入sdcard操作权限; 2.确认sdcard的存在; 3.不能直接在非sdcard的根目录创建文件,而是需要先创建目录,再创建文件; 在AndroidManifest.xml添加sdcard操作权限 复制代码