关于$namespace$和重载运算符
$namespace$
还记得列队和天天爱跑步吗?记得当时写部分分写的非常艰难,一大原因就是部分分之间有很多重名的数组,而且大小还不一样大,经常写着写着就串了,而且$maxn$有一次提交时用错了直接全部$MLE$.
虽然正解一般没有这么麻烦,可是考场上不一定能想到正解.根据往年经验,$NOIP$的部分分是非常丰富的,比如列队那题:用四个部分分的程序拼凑就可以得到$80$分的好成绩,而且比满分做法好想不少.天天爱跑步也有五个部分分,相对来说好写的也有$60$分.这才是考试的正确策略嘛...
还有的题需要缩点后重新建图,或者是建一张反图,以前我喜欢这样:
void add1 (int x,int y)
{
g[++h].too=y;
g[h].nex=firs[x];
firs[x]=h;
}
void add2 (int x,int y)
{
G[++H].too=y;
G[H].nex=Firs[x];
Firs[x]=H;
}
然而仅仅依靠大小写区分实在是太困难了,一不注意就会写错,还非常难发现。
直到有一天烜神仙告诉我可以开多个$namespace$...
真的很好用啊,而且一点都不难学.
一个简易版的教程:首先把$using$ $namespace$ $std$去掉,然后全面使用$cin$,$cout$,系统自带的$min$,$max$,此时这些语句前面就必须使用$std::$,等用习惯了换上自己的$namespace$就好了.
这个教程清晰易懂:http://www.runoob.com/cplusplus/cpp-namespaces.html
重载运算符
手写堆是不可能手写堆的,这辈子也不可能手写堆的.
但是...如果要把结构体放进堆里呢?以前一直凑合,比如说堆优化最短路时就用$pair$,毕竟这个是自动按照第一维排序的,但是复杂一些的结构就不能再这么凑合了.决定学一下重载运算符.
这个一定要小心,有时候在自己的电脑上过了,交上去却$CE$,一个相对来说比较稳妥的方式就是“凡是模板上写的,一字不差的抄下来;凡是教程上说的,一字不漏的背下来”.
struct z
{
int v;
bool operator > (const z &a) const {
return v>a.v;
}
bool operator < (const z &a) const {
return v<a.v;
}
};
考试之前一定再看看,不过能不用尽量不用,毕竟不是太熟练.
---shzr
关于$namespace$和重载运算符的更多相关文章
- c++的重载运算符
c++中允许重载运算符: 这是我辛苦的结果 #include"iostream"using namespace std;class aaa{ int x;public: aaa() ...
- C# 重载运算符
如果你想让自己定义的类型可以用运算符进行运算,那么可以通过重载运算符来实现: 示例: class Salary { public int RMB { get; set; } public static ...
- 【STL】重载运算符
重载运算符 为什么要重载运算符: C++中预定义的运算符的操作对象只能是基本数据类型.但实际上,对于许多用户自定义类型(例如结构体),也需要类似的运算操作.这时就必须在C++中重新定义这些运算符,赋予 ...
- c++中有些重载运算符为什么要返回引用
事实上,我们的重载运算符返回void.返回对象本身.返回对象引用都是可以的,并不是说一定要返回一个引用,只不过在不同的情况下需要不同的返回值. 那么什么情况下要返回对象的引用呢? 原因有两个: 允许进 ...
- C++ Primer : : 第十四章 : 重载运算符与类型转换之类型转换运算符和重载匹配
类型转换运算符 class SmallInt { public: SmallInt(int i = 0) : val(i) { if (i < 0 || i > 255) throw st ...
- C++ Primer : 第十四章 : 重载运算与类型转换之重载运算符
重载前须知 重载运算符是特殊的函数,它们的名字由operator和其后要重载的运算符号共同组成. 因为重载运算符时函数, 因此它包含返回值.参数列表和函数体. 对于重载运算符是成员函数时, 它的第一个 ...
- C#基础知识系列一(goto、i++、三元运算符、ref和out、String和string、重载运算符)
前言 这两天在网上看到的总结很多,尤其是博客园中的,很多很多,也给了我很多的启发,当然自己也总结过,而且有很多人也给与我一些意见和看法.不管怎样,自己还是先把所谓的基础知识加强巩固下吧. 2014年的 ...
- c++重载运算符注意
c++重载运算符的时候加&或不加: 如果加了&表示引用,说明用的都是同一块内存.如果不加,那么用的就是一份拷贝,即不同的内存. 一般连续操作的时候要加&. 可以重新定义一个对象 ...
- C++学习27 用全局函数重载运算符
运算符重载函数既可以声明为类的成员函数,也可以声明为所有类之外的全局函数. 运算符重载函数作为类的成员函数 将运算符重载函数声明为类的成员函数时,二元运算符的参数只有一个,一元运算符不需要参数.之所以 ...
- Chapter14:重载运算符
对于一个运算符函数来说,它或者是类的成员,或者至少含有一个类类型的参数. int operator+(int, int);//错误,不能为int重定义内置运算符 对于一个重载的运算符来说,其优先级和结 ...
随机推荐
- .NET Core2.0 使用EF做数据操作
原文链接:https://www.cnblogs.com/chrisluo/p/7500462.html
- MSSQL如何将查询结果拼接成字符串
在博问上看到一个提问“MSSQL如何将查询结果拼接成字符串” ,想了一下应该怎么实现呢,在c#等语言下好实现,但在sql里实现.还真没做过. 目标:想要在SQL中将查询的结果拼接为 '1','2',' ...
- [android] 新闻客户端实现左侧导航点击切换
设置主布局文件,为根布局设置一个id,作为内容区 给ListView的条目设置点击事件,setOnItemClickListener()方法,参数:上下文 当前的Fragment实现OnItemCli ...
- Java迭代器的一般用法
迭代器(Iterator) 迭代器是一种设计模式,它是一个对象,它可以遍历并选择序列中的对象,而开发人员不需要了解该序列的底层结构.迭代器通常被称为“轻量级”对象,因为创建它的代价小. Java中的I ...
- 4+1视图与UML对应关系
4+1视图模型概况 Kruchten 提出了一个"4+1"视图模型,从5个不同的视角包括包括逻辑试图.进程视图.物理视图.开发视图.场景视图来描述软件体系结构.每一个视图只 ...
- JAVA设计模式详解(二)----------观察者模式
有一个模式可以帮助你的对象知悉现况,不会错过该对象感兴趣的事,对象甚至在运行时可以决定是否要继续被通知,如果一个对象状态的改变需要通知很多对这个对象关注的一系列对象,就可以使用观察者模式 .观察者模式 ...
- HUST1017(KB3-A Dancing links)
1017 - Exact cover Time Limit: 15s Memory Limit: 128MB Special Judge Submissions: 7270 Solved: 3754 ...
- python-策略模式
源码地址:https://github.com/weilanhanf/PythonDesignPatterns 说明: 策略指的就是为了达到某一目的而采取的手段或者方法.为了实现软件设计咪表,对象可能 ...
- 设计模式原则(1)--Single Responsibility Principle(SRP)--单一职责原则
1.定义: 不要存在多于一个导致类变更的原因.通俗的说,即一个类只负责一项职责. 2.使用场景: 如果类A有两个职责:d1,d2.当职责d1需要修改时,可能会导致原本运行正常的职责d2功能产生问题. ...
- vue-scroller记录滚动位置
问题描述: 列表页进入详情页,或者tab页切换,然后再返回列表页,希望能切换到之前滚动位置 解决问题思路: 切换到其他页面前记录位置,返回列表页的时候返回位置.这就需要借助vue-router的bef ...