鱼C论坛

 找回密码
 立即注册
查看: 2785|回复: 20

[作品展示] C++的算法相较于C高级在哪?

[复制链接]
发表于 2023-1-7 14:28:19 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 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)

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-1-7 14:33:49 | 显示全部楼层
C没有模板
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-1-7 14:35:49 | 显示全部楼层

当然,没有模板参数,但是却有模拟模板的方法(指针),所以C++的模板更简单啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-1-7 15:02:48 | 显示全部楼层
我特别好奇这个“只有算法,不是 C++”究竟是什么意思
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-1-7 15:09:27 | 显示全部楼层
原来如此
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-1-7 15:10:11 | 显示全部楼层
中奖!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-1-7 15:11:12 | 显示全部楼层

回帖奖励 +1 鱼币

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2023-1-7 15:34:12 | 显示全部楼层
dolly_yos2 发表于 2023-1-7 15:02
我特别好奇这个“只有算法,不是 C++”究竟是什么意思

C++非常厉害,如果要讲的话,这样说,所有你看见的计算机科技,C++都可以做(包括C编译器,汇编),这个世界上所有比C++低级的,将会被快速时代淘汰,比C++高级的,没比C++高级多少
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

C++代替不了汇编语言
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-1-7 15:52:10 | 显示全部楼层
人造人 发表于 2023-1-7 15:39
C++代替不了汇编语言

emmm,确实代替不了,但是做啊,做个汇编编译器还是可以的,而且,其实,如果有一个库的话,所有的汇编指令都可以被写成C库
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

那是当然,C++和汇编语言可以配合
C++调用汇编语言写的程序来完成底层操作
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

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

点评

不,我坚决不同意楼主的看法!: 1.0
不,我坚决不同意楼主的看法!: 1
C++ 给了算法施展的空间,比如模板  发表于 2023-1-7 16:29
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

给予了梯子,向上,向下都可以
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-1-8 10:00:36 | 显示全部楼层
C丁洞杀O 发表于 2023-1-7 21:00
给予了梯子,向上,向下都可以

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

但还是谢谢你的看法与分享
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 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秒的时间,那些高级语言有几个能比?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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楼 中也没有提及算法不是吗?(只有提及重载和模板)

如果想以全世界所有编程语言做比较,当然算法也可以作为参考点,但不会有人这么做,没有任何意义。所有语言有利也有弊,不同语言针对不同所需,这才是语言真正的用意。世界上没有最好的语言,只有用的对的语言。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

模板就是算法的一部分,重载的本质是为了提高内存的复用率,模板提升了算法的效率,重载提高了内存的效率,这不就是算法的需求吗?确实,语法,但是,语法提现的不正是算法吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 0 反对 1

使用道具 举报

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

你说的 模板提升了算法的效率
这个效率指的是编写算法的效率还是运行这个算法的效率?,如果你说的是编写算法的效率,那我认,如果你说的是运行算法的效率,那我不认
你说的 重载提高了内存的效率
此话怎讲?怎么就提高了内存的效率呢?这个效率指的是?内存的使用率?,就是说原来使用了10M的内存,现在使用了1M的内存,这样?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-1-8 16:49:31 | 显示全部楼层
人造人 发表于 2023-1-8 14:52
你说的 模板提升了算法的效率
这个效率指的是编写算法的效率还是运行这个算法的效率?,如果你说的是编 ...

都是指针的高级运用,指针的优点被分化成了这些,你说呢!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-1-8 17:06:39 | 显示全部楼层
C丁洞杀O 发表于 2023-1-8 16:49
都是指针的高级运用,指针的优点被分化成了这些,你说呢!

我不知道你想说什么
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-25 22:39

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表