C丁洞杀O 发表于 2023-1-7 14:28:19

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)

人造人 发表于 2023-1-7 14:33:49

C没有模板

C丁洞杀O 发表于 2023-1-7 14:35:49

人造人 发表于 2023-1-7 14:33
C没有模板

当然,没有模板参数,但是却有模拟模板的方法(指针),所以C++的模板更简单啊{:9_235:}

dolly_yos2 发表于 2023-1-7 15:02:48

我特别好奇这个“只有算法,不是 C++”究竟是什么意思

三体—夜航星 发表于 2023-1-7 15:09:27

原来如此

三体—夜航星 发表于 2023-1-7 15:10:11

中奖!

三体—夜航星 发表于 2023-1-7 15:11:12

{:10_256:}

C丁洞杀O 发表于 2023-1-7 15:34:12

dolly_yos2 发表于 2023-1-7 15:02
我特别好奇这个“只有算法,不是 C++”究竟是什么意思

C++非常厉害,如果要讲的话,这样说,所有你看见的计算机科技,C++都可以做(包括C编译器,汇编),这个世界上所有比C++低级的,将会被快速时代淘汰,比C++高级的,没比C++高级多少

人造人 发表于 2023-1-7 15:39:28

C丁洞杀O 发表于 2023-1-7 15:34
C++非常厉害,如果要讲的话,这样说,所有你看见的计算机科技,C++都可以做(包括C编译器,汇编),这个 ...

C++代替不了汇编语言

C丁洞杀O 发表于 2023-1-7 15:52:10

人造人 发表于 2023-1-7 15:39
C++代替不了汇编语言

emmm,确实代替不了,但是做啊,做个汇编编译器还是可以的,而且,其实,如果有一个库的话,所有的汇编指令都可以被写成C库

人造人 发表于 2023-1-7 15:58:15

C丁洞杀O 发表于 2023-1-7 15:52
emmm,确实代替不了,但是做啊,做个汇编编译器还是可以的,而且,其实,如果有一个库的话,所有的汇编指 ...

那是当然,C++和汇编语言可以配合
C++调用汇编语言写的程序来完成底层操作

dolly_yos2 发表于 2023-1-7 16:08:10

C丁洞杀O 发表于 2023-1-7 15:34
C++非常厉害,如果要讲的话,这样说,所有你看见的计算机科技,C++都可以做(包括C编译器,汇编),这个 ...

就我所知,算法是语言无关的。既然厉害的是算法而不是 C++,您为何还要给予 C++ 如此高的评价?

C丁洞杀O 发表于 2023-1-7 21:00:43

dolly_yos2 发表于 2023-1-7 16:08
就我所知,算法是语言无关的。既然厉害的是算法而不是 C++,您为何还要给予 C++ 如此高的评价?

给予了梯子,向上,向下都可以

傻眼貓咪 发表于 2023-1-8 10:00:36

C丁洞杀O 发表于 2023-1-7 21:00
给予了梯子,向上,向下都可以

其实你是想表达的是 C++ 和 C 的语法吧?不是算法吧?算法好象和语言没有关系

但还是谢谢你的看法与分享{:10_254:}

C丁洞杀O 发表于 2023-1-8 11:09:00

傻眼貓咪 发表于 2023-1-8 10:00
其实你是想表达的是 C++ 和 C 的语法吧?不是算法吧?算法好象和语言没有关系

但还是谢谢你的看法与分 ...

有哦,你像Java,Python,GO等等语言,他们没有写底层算法的能力与支持,尤其在解释型语言格外明显,C和C++的强大就在于,他们可以写出几乎除了物理硬件外所有的电子设备,当然,C和C++可以写操作系统,而且还有一点,算法的速度不就是算法的追求吗?而C和C++确保编程速度的同时,提高了运行速度,C 10000位的高精度加减法需要2秒的时间,那些高级语言有几个能比?

傻眼貓咪 发表于 2023-1-8 11:41:26

本帖最后由 傻眼貓咪 于 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楼 中也没有提及算法不是吗?(只有提及重载和模板)

如果想以全世界所有编程语言做比较,当然算法也可以作为参考点,但不会有人这么做,没有任何意义。所有语言有利也有弊,不同语言针对不同所需,这才是语言真正的用意。世界上没有最好的语言,只有用的对的语言。

C丁洞杀O 发表于 2023-1-8 14:19:20

傻眼貓咪 发表于 2023-1-8 11:41
你的标题是用 C++ 和 C 比较不是吗?你自己都说了 "C和C++的强大就在于...",表示你也认同两者的算法速 ...

模板就是算法的一部分,重载的本质是为了提高内存的复用率,模板提升了算法的效率,重载提高了内存的效率,这不就是算法的需求吗?确实,语法,但是,语法提现的不正是算法吗

人造人 发表于 2023-1-8 14:52:32

C丁洞杀O 发表于 2023-1-8 14:19
模板就是算法的一部分,重载的本质是为了提高内存的复用率,模板提升了算法的效率,重载提高了内存的效率 ...

你说的 模板提升了算法的效率
这个效率指的是编写算法的效率还是运行这个算法的效率?,如果你说的是编写算法的效率,那我认,如果你说的是运行算法的效率,那我不认
你说的 重载提高了内存的效率
此话怎讲?怎么就提高了内存的效率呢?这个效率指的是?内存的使用率?,就是说原来使用了10M的内存,现在使用了1M的内存,这样?

C丁洞杀O 发表于 2023-1-8 16:49:31

人造人 发表于 2023-1-8 14:52
你说的 模板提升了算法的效率
这个效率指的是编写算法的效率还是运行这个算法的效率?,如果你说的是编 ...

都是指针的高级运用,指针的优点被分化成了这些,你说呢!

人造人 发表于 2023-1-8 17:06:39

C丁洞杀O 发表于 2023-1-8 16:49
都是指针的高级运用,指针的优点被分化成了这些,你说呢!

我不知道你想说什么
页: [1]
查看完整版本: C++的算法相较于C高级在哪?