C/C++ 错误笔记-解决swap函数与标准库的std::swap函数冲突的问题
下午写了一份代码:
#include <iostream> using namespace std; // 模板1:交换基本类型的值
template<typename T>
void swap(T &a, T &b); //模板2:交换两个数组
template<typename T, unsigned N>
void swap(T (&a)[N], T(&b)[N]); //模板3:打印数组元素
template<typename T, unsigned N>
void printArray(T (&arr)[N]); int main() { int m = , n = ;
swap(m,n); cout<<m<<", "<<n<<endl; // 交换两个数组
int a[] = {,,,,};
int b[] = {,,,,};
swap(a,b); // 匹配模板2 // 打印数组
printArray(a);
printArray(b); return ;
} template<typename T>
void swap(T &a, T &b) {
T tmp = a;
a = b;
b = tmp;
} template<typename T, unsigned N>
void swap(T (&a)[N], T(&b)[N]) {
T tmp;
for (int i= ; i<N;i++) {
tmp = a[i];
a[i] = b[i];
b[i] = tmp;
}
} template<typename T, unsigned N>
void printArray(T (&arr)[N]) {
for (int i = ;i<N;i++) {
if (i == N - ) {
cout<<arr[i]<<endl;
} else {
cout<<arr[i]<<", ";
}
}
}
编译死活通不过,老是报如下错误:

后来只能求助万能的Google,结果原因是:
不能编译运行的原因是swap函数与标准库的std::swap函数冲突。属于调用疏忽。
解决方法1:调用时声明名字空间,把swap(a1,a2);改成::swap(a1,a2);前加::,避免冲突
解决方法2:改变函数名称,把自定义的函数swap改成swapABC或其它。
C/C++ 错误笔记-解决swap函数与标准库的std::swap函数冲突的问题的更多相关文章
- 【c++ Prime 学习笔记】第17章 标准库特殊设施
17.1 tuple类型 tuple是类似pair的模板: pair和tuple的成员类型都可以不相同 pair恰好有两个成员,tuple可有任意数量的成员 按照不同参数数量和类型实例化出的tuple ...
- Python标准库:内置函数hasattr(object, name)
Python标准库:内置函数hasattr(object, name) 本函数是用来判断对象object的属性(name表示)是否存在.如果属性(name表示)存在,则返回True,否则返回False ...
- C 和 C++ 的标准库分别有自己的 locale 操作方法,C 标准库的 locale 设定函数是 setlocale(),而 C++ 标准库有 locale 类和流对象的 imbue() 方法(gcc使用zh_CN.GBK,或者zh_CN.UTF-8,VC++使用Chinese_People's Republic of China.936或者65001.)
转自:http://zyxhome.org/wp/cc-prog-lang/c-stdlib-setlocale-usage-note/ [在此向原文作者说声谢谢!若有读者看到文章转载时请写该转载地址 ...
- Python标准库-数字的处理函数(math模块)
Python标准库-数字的处理函数(math模块) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. #!/usr/bin/env python #_*_conding:utf-8_* ...
- Python 2.7 学习笔记 内置语句、函数、标准库
使用任何开发语言进行软件开发,都离不开语言提供的内置库(或Api),甚至说内置库的强大及使用是否方便都会影响大家对开发语言的选择. python语言,一样提供了很多内置的功能,可供开发时使用.主要有如 ...
- 《C++ Primer》学习笔记【第二部分 C++标准库】
第8章 IO库 IO对象不能复制,即1.IO对象不能存储在vector或其他容器中 2.如果需要传递或返回IO对象,必须传递或返回指向该对象的指针或引用. 一般情况下,如果要传递IO对象以便对它进 ...
- python第六天 函数 python标准库实例大全
今天学习第一模块的最后一课课程--函数: python的第一个函数: 1 def func1(): 2 print('第一个函数') 3 return 0 4 func1() 1 同时返回多种类型时, ...
- C++ Pirmer : 第十四章 : 重载运算符与类型转换之函数调用运算符与标准库的定义的函数对象
函数调用运算符 struct test { int operator()(int val) const { return (i > 0 ? i : -i); } }; 所谓的函数调用就是一个类重 ...
- A Byte of Python 笔记(12)python 标准库:sys、os,更多内容
第14章 python 标准库 Python标准库是随Python附带安装的,它包含大量极其有用的模块. sys 模块 sys 模块包含系统对应的功能.如 sys.argv 列表包含命令行参数. # ...
随机推荐
- 【spring】【spring mvc】【spring boot】获取spring cloud项目中所有spring mvc的请求资源
实现的方法: 1.在父级项目中 或者 每个微服务都引用的项目中添加实体类Resource 2.在父级项目中 或者 每个为服务都引用的项目中写一个工具类,作用是用来获取请求资源 3.在每一个微服务的启动 ...
- java访问ad域
1.活动目录(AD) Active Directory 是用于 Windows Server 的目录服务.它存储着网络上各种对象的有关信息,并使该信息易于管理员和用户查找及使用.Active Dire ...
- [Android Memory] 手动回收ImageVIew的图片资源
ImageView默认是不进行图片资源的回收的,需要我们自己在activity或者fragment中进行回收: public static void releaseImageViewResouce(I ...
- [转]SSIS ADO.NET vs OLEDB
本文转自:http://social.msdn.microsoft.com/Forums/sqlserver/en-US/1a9e3670-9685-4943-913b-123ecf248a9c/ol ...
- 自制DEV皮肤
1.打开DEV自带的皮肤制作工具 2.创建一个新的皮肤工程[File][New] 3.改变指定控件的颜色,比如背景色 4.改变控件边框的颜色.粗细
- unity statics window fps原理
https://forum.unity.com/threads/is-unity-fps-count-wrong-or-am-i-missing-something.150139/ 看了下这个fps ...
- Linux 调度器发展简述
引言 进程调度是操作系统的核心功能.调度器只是是调度过程中的一部分,进程调度是非常复杂的过程,需要多个系统协同工作完成.本文所关注的仅为调度器,它的主要工作是在所有 RUNNING 进程中选择最合适的 ...
- 页面优化——js异步载入
同步载入 在介绍js异步载入之前.我们先来看看什么是js同步载入.我们平时最常使用的就是这样的同步载入形式: <script src="http://XXX.com/script.js ...
- redis学习笔记——expire、pexpire、expireat、pexpireat的执行过程
这里主要讲的Redis是怎么样设置过期键的,可以算作后续"Redis过期键的删除策略"的前篇或者说预备知识. 在了解过期键问题前我们首先需要对redis的数据库和数据库键空间有一定 ...
- 虚拟机VMware12.0安装centos 6.5+VMware中虚拟机网络模式区分
之前的步骤一路next,有设置内存大小的根据机器的配置设置一下即可. 需要注意的地方, 下面是对于简化版进行设置的步骤 虚拟机网络模式 1.桥接模式 在桥接模式下,VMware虚拟机里的系统就像是 局 ...