C++的算法相较于C高级在哪?
本帖最后由 C丁洞杀O 于 2023-1-7 14:30 编辑(只有算法,不是C++高级!)
1. 函数重载,这个伟大的能力,源自于C++的函数名称粉碎技术
如:int Add(int a, int b); 会变成 _Add_int_int 的形式(各个编译器会有不同,但大体相同),所以C++的函数可以通过函数参数列表进行重载
下面的程序
#include <iostream>
using namespace std;
int add(int a, int b){
return a+b;
}
double add(double a, double b ){
return a+b;
}
int main (){
cout<<add(1, 2)<<endl;
cout<<add(2.12, 2.1);
return 0;
}
输出:
3
4.22
2. C++支持模板, C也支持,但不如C++的强大,好用
他的好处就是算法结构,无论是模板函数还是模板类,都非常好用(调用强大)
#include <iostream>
using namespace std;
class cs { // 当模板多的时候,就成了一个算法库 (直接写函数的可能出现重名(namespace + class)可以减少重名)
public:
template<typename Do>
static int add(Do a, Do b) {
return a + b;
}
template<typename Do>
static void ifa(bool a,Do& b) {// 如果,那么
if (a) {
b();
}
else {
cout << "false";
}
}
};
struct out { // 重载()算数符, 达到伪函数的目的
void operator()() {
cout << "do\n";
}
};
int main() {
cout<< cs::add(1, 1) << endl;
out d;
cs::ifa(1, d);
system("pause");
return 0;
}
还有许多,回调函数和引用下次我心情好了在继续讲吧,反正,估计没人看(q_q)
C没有模板
人造人 发表于 2023-1-7 14:33
C没有模板
当然,没有模板参数,但是却有模拟模板的方法(指针),所以C++的模板更简单啊{:9_235:} 我特别好奇这个“只有算法,不是 C++”究竟是什么意思 原来如此 中奖! {:10_256:} dolly_yos2 发表于 2023-1-7 15:02
我特别好奇这个“只有算法,不是 C++”究竟是什么意思
C++非常厉害,如果要讲的话,这样说,所有你看见的计算机科技,C++都可以做(包括C编译器,汇编),这个世界上所有比C++低级的,将会被快速时代淘汰,比C++高级的,没比C++高级多少 C丁洞杀O 发表于 2023-1-7 15:34
C++非常厉害,如果要讲的话,这样说,所有你看见的计算机科技,C++都可以做(包括C编译器,汇编),这个 ...
C++代替不了汇编语言
人造人 发表于 2023-1-7 15:39
C++代替不了汇编语言
emmm,确实代替不了,但是做啊,做个汇编编译器还是可以的,而且,其实,如果有一个库的话,所有的汇编指令都可以被写成C库 C丁洞杀O 发表于 2023-1-7 15:52
emmm,确实代替不了,但是做啊,做个汇编编译器还是可以的,而且,其实,如果有一个库的话,所有的汇编指 ...
那是当然,C++和汇编语言可以配合
C++调用汇编语言写的程序来完成底层操作
C丁洞杀O 发表于 2023-1-7 15:34
C++非常厉害,如果要讲的话,这样说,所有你看见的计算机科技,C++都可以做(包括C编译器,汇编),这个 ...
就我所知,算法是语言无关的。既然厉害的是算法而不是 C++,您为何还要给予 C++ 如此高的评价? dolly_yos2 发表于 2023-1-7 16:08
就我所知,算法是语言无关的。既然厉害的是算法而不是 C++,您为何还要给予 C++ 如此高的评价?
给予了梯子,向上,向下都可以 C丁洞杀O 发表于 2023-1-7 21:00
给予了梯子,向上,向下都可以
其实你是想表达的是 C++ 和 C 的语法吧?不是算法吧?算法好象和语言没有关系
但还是谢谢你的看法与分享{:10_254:} 傻眼貓咪 发表于 2023-1-8 10:00
其实你是想表达的是 C++ 和 C 的语法吧?不是算法吧?算法好象和语言没有关系
但还是谢谢你的看法与分 ...
有哦,你像Java,Python,GO等等语言,他们没有写底层算法的能力与支持,尤其在解释型语言格外明显,C和C++的强大就在于,他们可以写出几乎除了物理硬件外所有的电子设备,当然,C和C++可以写操作系统,而且还有一点,算法的速度不就是算法的追求吗?而C和C++确保编程速度的同时,提高了运行速度,C 10000位的高精度加减法需要2秒的时间,那些高级语言有几个能比? 本帖最后由 傻眼貓咪 于 2023-1-8 11:44 编辑
C丁洞杀O 发表于 2023-1-8 11:09
有哦,你像Java,Python,GO等等语言,他们没有写底层算法的能力与支持,尤其在解释型语言格外明显,C和C ...
你的标题是用 C++ 和 C 比较不是吗?你自己都说了 "C和C++的强大就在于...",表示你也认同两者的算法速度相近不是吗?那么为什么这里你又拿 Java、Python、GO 等其它语言做比较呢?(完全离题啊?)你的标题是想以 C++ 和 C 的语法做比较这点我没有说错吧?毕竟你在 1楼 中也没有提及算法不是吗?(只有提及重载和模板)
如果想以全世界所有编程语言做比较,当然算法也可以作为参考点,但不会有人这么做,没有任何意义。所有语言有利也有弊,不同语言针对不同所需,这才是语言真正的用意。世界上没有最好的语言,只有用的对的语言。 傻眼貓咪 发表于 2023-1-8 11:41
你的标题是用 C++ 和 C 比较不是吗?你自己都说了 "C和C++的强大就在于...",表示你也认同两者的算法速 ...
模板就是算法的一部分,重载的本质是为了提高内存的复用率,模板提升了算法的效率,重载提高了内存的效率,这不就是算法的需求吗?确实,语法,但是,语法提现的不正是算法吗 C丁洞杀O 发表于 2023-1-8 14:19
模板就是算法的一部分,重载的本质是为了提高内存的复用率,模板提升了算法的效率,重载提高了内存的效率 ...
你说的 模板提升了算法的效率
这个效率指的是编写算法的效率还是运行这个算法的效率?,如果你说的是编写算法的效率,那我认,如果你说的是运行算法的效率,那我不认
你说的 重载提高了内存的效率
此话怎讲?怎么就提高了内存的效率呢?这个效率指的是?内存的使用率?,就是说原来使用了10M的内存,现在使用了1M的内存,这样?
人造人 发表于 2023-1-8 14:52
你说的 模板提升了算法的效率
这个效率指的是编写算法的效率还是运行这个算法的效率?,如果你说的是编 ...
都是指针的高级运用,指针的优点被分化成了这些,你说呢! C丁洞杀O 发表于 2023-1-8 16:49
都是指针的高级运用,指针的优点被分化成了这些,你说呢!
我不知道你想说什么
页:
[1]