1.看到这个,我的第一反应时为什么不用引用啊,记得effective c++里面提到过能用引用就用引用,不然stl在值传递的时候真的是会拷贝的,广析构和构造就够麻烦的了
2.据说该把i++改成++i,我只记得++i比i++是要快的,因为少了temp,翻了c++ prime,iterator如果用i++的话也会存在多次拷贝的问题
写个挫码,一分钟的事情
2.据说该把i++改成++i,我只记得++i比i++是要快的,因为少了temp,翻了c++ prime,iterator如果用i++的话也会存在多次拷贝的问题
3.*i == name这个似乎有问题,又说不出哪里有问题,不同类型的变量最好应该先变成相同的类型吧,convert *i to string
string FIndAddress(list<Company> companies, string name)
{
for (list<Company>::iterator i = companies.begin(); i != companies.end(); i++)
{ if (*i == name)
return (*i).address;
}
return "";
}
数组转化问题,新生成的数组每一个数都是对应前者和自己的乘积。例如:
[1, 2, 4] => [1, 2, 8].
这个是典型的倒过来做的题目
int a2[] = {3, 4, 14};
int aa2[] = {0,0,0};
for (int i=2; i>=0; --i)
{
if (i != 0)
{
aa2[i] = a2[i] * a2[i-1];
}
else
aa2[i] = a2[i];
}
写个挫码,一分钟的事情
g++编译
编译分为预处理(也称预编译,Preprocessing)、编译(Compilation)、汇编 (Assembly)和连接(Linking)
1.g++ -E 1.cpp -o 1.i
gcc的-E选项,让编译器在预处理后停止,并输出预处理结果
2.g++ -S 1.i -o 1.s
-S选项,表示在程序编译期间,在生成汇编代码后,停止,-o输出汇编代码文件
3.as 1.s -o 1.o
gas汇编器负责将.s文件其编译为目标文件
4.g++ 1.o -o test
目标文件与所需的所有附加的目标文件连接起来,最终生成可执行文件,附加的目标文件包括静态连接库和动态连接库
输出为:
$ ./test
56
12
3
其中:cat 1.s|wc -l 可以显示代码行数
感叹见过多少211的人,其实也不是人人都是很聪明的
额,当年我面试的时候怎么没碰上这种题啊,
哎,求被面试