c++学习笔记(2)

本文详细介绍了C++中命名空间的概念、作用范围、避免命名冲突的方法,以及如何在代码中合理使用命名空间,通过实例展示了命名空间的正确应用与潜在风险。

</pre>c++学习笔记(2)<p></p><p>关于namespace</p><p>解决<span style="font-family:verdana,arial,sans-serif; font-size:13px; line-height:18.2px">在同一个范围内引入了像个相同的标识的问题,如果不加区分,那么编译器将无法分辨引用的到底是哪一个,导致程序出错<span style="font-family:verdana,arial,sans-serif; font-size:13px; line-height:18.2px">naming collision</span></span></p><p><span style="font-family:verdana,arial,sans-serif; font-size:13px; line-height:18.2px"><span style="font-family:verdana,arial,sans-serif; font-size:13px; line-height:18.2px">namespace的作用范围同变量的作用域规则相同,在函数外部定义的那么就是作用范围就是从定义开始到本代码块执行完毕,使用namespace主要为了避免标识冲突那么尽量不要使用自定义的namespace作为全局范围或者将该namespace放到头文件的header中,避免成为一个全局的范围。</span></span></p><p><span style="font-family:verdana,arial,sans-serif; font-size:13px; line-height:18.2px"><span style="font-family:verdana,arial,sans-serif; font-size:13px; line-height:18.2px"></span></span></p><p><span style="font-family:verdana,arial,sans-serif; font-size:13px; line-height:18.2px"><span style="font-family:verdana,arial,sans-serif; font-size:13px; line-height:18.2px">namespace 定义命名空间</span></span></p><p></p><pre name="code" class="cpp">namespace    id{
}

那么在此花括号中的所有内容都是存在这个命名空间中可以使用

id::id2

双冒号运算符(scope resolution operator)在c++中标识域运算,也就是在namespace中使用

在定义号命名空间后在函数中使用可以使用using关键字,比如上例中

using namespace id
后此之后的代码中出现标识后将在namespace id空间中查找,同一代码块可以使用多次using namespace,多次使用using之后的代码会在这几个引用的命名空间中查找特定的标识,那么在这几个using之后的表达式所在的命名空间就是这几个namespace 的并集,但是这样使用的同时,大大增加了命名冲突的可能性,比如以下代码:

my_1.h

namespace  my_1{

int doSomething(int x,int y){
<span style="white-space:pre">	</span>return x-y;
}

}

my_2.h

namespace my_2{
int doSomething(int x,int y){
      return x+y;
}
}


主程序


int main()

using namespace std;

using namespace my_1; 

using namespace my_2; 

cout << doSomthing(6,5) << endl;

}

在此主程序下,使用了两个自定义的命名空间,并且这两个命名空间存在相同的标识,那么在连续使用using将my_1和my_2命名空间包含进来之后,程序在编译时就不知道这个doSomething是属于谁的,也就导致编译出错

相同的命名空间可以在程序中多次出现并且包含不同的标识,相当于是分散定义,但是同属一个命名空间,多个命名相同的话,在整个程序中相当于是并集,所属在不同位置的相同命名空间其实就是一个命名空间




内容概要:本文系统介绍了算术优化算法(AOA)的基本原理、核心思想及Python实现方法,并通过图像分割的实际案例展示了其应用价值。AOA是一种基于种群的元启发式算法,其核心思想来源于四则运算,利用乘除运算进行全局勘探,加减运算进行局部开发,通过数学优化器加速函数(MOA)和数学优化概率(MOP)动态控制搜索过程,在全局探索与局部开发之间实现平衡。文章详细解析了算法的初始化、勘探与开发阶段的更新策略,并提供了完整的Python代码实现,结合Rastrigin函数进行测试验证。进一步地,以Flask框架搭建前后端分离系统,将AOA应用于图像分割任务,展示了其在实际工程中的可行性与高效性。最后,通过收敛速度、寻优精度等指标评估算法性能,并提出自适应参数调整、模型优化和并行计算等改进策略。; 适合人群:具备一定Python编程基础和优化算法基础知识的高校学生、科研人员及工程技术人员,尤其适合从事人工智能、图像处理、智能优化等领域的从业者;; 使用场景及目标:①理解元启发式算法的设计思想与实现机制;②掌握AOA在函数优化、图像分割等实际问题中的建模与求解方法;③学习如何将优化算法集成到Web系统中实现工程化应用;④为算法性能评估与改进提供实践参考; 阅读建议:建议读者结合代码逐行调试,深入理解算法流程中MOA与MOP的作用机制,尝试在不同测试函数上运行算法以观察性能差异,并可进一步扩展图像分割模块,引入更复杂的预处理或后处理技术以提升分割效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值