关于$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重定义内置运算符 对于一个重载的运算符来说,其优先级和结 ...
随机推荐
- MySQL 中NULL和空值的区别,索引列可以有空值或者null吗?
空值跟null的区别.mysql官方: “NULL columns require additional space in the row to record whether their values ...
- Idea的Maven项目引入模块
File->Project Structures->Modules 点击那个加号,选择Import Module
- Oracle面试的基本题
事务 事务的概念 事务就是对数据操作的一系列指令集合. 事务的四个特性 原子性 事务的操作要么全部成功,要么全部失败,如果有一个指令失败,那么事务回滚到初始状态. 一致性 事务的执行不能破坏数据的完整 ...
- Mybatis插件开发
前面几篇文章介绍了Mybtis中四个重要的对象,其中提到它们都是在Configuration中被创建的,我们一起看一下创建四大对象的方法,代码如下所示: public ParameterHandler ...
- 安装apr-1.6.3报错[cannot remove `libtoolT’: No such file or directory]解决方法
发现有这个提示:cannot remove `libtoolT’: No such file or directory , 编辑 configure文件,查找 $RM "$cfgfile&q ...
- linux系统编程:cp的另外一种实现方式
之前,这篇文章:linux系统编程:自己动手写一个cp命令 已经实现过一个版本. 这里再来一个版本,涉及知识点: linux系统编程:open常用参数详解 Linux系统编程:简单文件IO操作 /*= ...
- centos7下采用Nginx+uwsgi来部署django
之前写过采用Apache和mod_wsgi部署django,因为项目需要,并且想比较一下Nginx和Apache的性能,尝试采用Nginx+uwsgi的模式来部署django. 1.安装uwsgi以及 ...
- [基础知识]row类visible使用
使用row的visibe属性,要反向遍历rowset,因为如果正向遍历,rowset是实时变化的,行号是错误的.正确代码如下: Local integer &k; For &k = & ...
- Android--解决EditText放到popupWindow中,原有复制、粘贴、全选、选择功能失效问题
1.原来是将EditView放到了popupwindow,发现EditView原有的复制.粘贴.全选.选择功能失效了,所以便用DialogFragment代替了popupWindow 直接上代码 ①. ...
- python 版本升级
python 版本升级 升级python 查看python的版本 python -V Python 2.6.6 下载新版本 wget https://www.python.org/ftp/python ...