0%

有两个线程,一个名为偶数线程,一个名为奇数线程,偶数线程只打印偶数,奇数线程只打印奇数,两个线程按顺序交替打印

阅读全文 »

记录自己一道没有做出来的面试题。

数组中存储了一堆小于10的非负整数,整个数组从左到右代表一个正整数(如数组[0, 1, 3, 2]代表正整数132)。现给出一个正整数K,要求经过K次数组相邻位置元素交换(必须完成K次交换),使得这个数组代表的数字最大。
例如,
int array[] = {0, 1, 3, 2}, K = 1,则经过1次交换后,数组所能代表的最大值为1032;
int array[] = {0, 1, 3, 2}, K = 2,则经过2次交换后,数组所能代表的最大值为3012。

阅读全文 »

std::move函数可以以非常简单的方式将左值引用转换为右值引用.

  1. C++ 标准库使用比如vector::push_back 等这类函数时,会对参数的对象进行复制,连数据也会复制.这就会造成对象内存的额外创建, 本来原意是想把参数push_back进去就行了,通过std::move,可以避免不必要的拷贝操作。

  2. std::move是将对象的状态或者所有权从一个对象转移到另一个对象,只是转移,没有内存的搬迁或者内存拷贝所以可以提高利用效率,改善性能.

阅读全文 »

不同类型的数据使用不同类型的绝对值函数:

整型:

1
int abs(int i)  //返回整型参数i的绝对值 

双精度浮点型:

1
double fabs(double x)  //返回双精度参数x的绝对值    

长整型:

1
long labs(long n)  //返回长整型参数n的绝对值 

复数:

1
double cabs(struct complex znum)  //返回复数znum的绝对值