18:让接口容易被正确使用,不易被误用 1:理想上,如果客户企图使用某个接口而却没有获得他所预期的行为,这个代码不该通过编译:如果代码通过了编译,它的作为就该是客户所想要的. 2:许多客户端的错误可以因为导入新类型而得到预防.比如下面的接口: class Date { public: Date(int month, int day, int year); ... }; 这个接口很容易使客户犯错,比如: Date d(, , ); // Oops! Should be "3, 30" ,…
C++ 常用编程--Swap函数有几种写法? 在说C++模板的方法前,我们先想想C语言里面是怎么做交换的. 举个例子,要将两个int数值交换,是不是想到下面的代码: void swap(int&a , int &b) { int t = a; a=b; b=t; } 如果要求不用临时变量,可考虑异或的方式. void swap(int&a,int&b) { if (&a != &b) { a ^= b; b ^= a; a ^= b; } } 整型数比较容易…
#include <iostream> using namespace std; /*值传递,局部变量a和b的值确实在调用swap0时变化了,当结束时,他们绳命周期结束*/ void swap0(int a, int b) { int tem = a; a = b; b = a; } /*没有初始化指针就开始用,该函数是有问题的*/ void swap1(int *a, int *b) { int *tem; /*注意tem没有分配内存*/ *tem = *a; *a = *b; *b = *…
Given a linked list, swap every two adjacent nodes and return its head. For example,Given 1->2->3->4, you should return the list as 2->1->4->3. Your algorithm should use only constant space. You may not modify the values in the list, onl…
24. Swap Nodes in Pairs Given a linked list, swap every two adjacent nodes and return its head. For example,Given 1->2->3->4, you should return the list as 2->1->4->3. Your algorithm should use only constant space. You may not modify the…
转载地址 1,最通用的模板交换函数模式:创建临时对象,调用对象的赋值操作符. template <class T> void swap ( T& a, T& b ) { T c(a); a=b; b=c; } 需要构建临时对象,一个拷贝构造,两次赋值操作. ,针对int型优化: void swap(int & __restrict a, int & __restrict b) { a ^= b; b ^= a; a ^= b; } 无需构造临时对象,异或 因为指…