Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/164.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 使用C+是一种不好的做法吗+;仅适用于STL容器?_C++_C_Containers - Fatal编程技术网

C++ 使用C+是一种不好的做法吗+;仅适用于STL容器?

C++ 使用C+是一种不好的做法吗+;仅适用于STL容器?,c++,c,containers,C++,C,Containers,首先是一点背景 下面,我用C、C++和java来编写编码(通用)算法,而不是GUI和FIGH程序的接口,而是简单的命令行算法和库。 我开始学习Java编程。我在Java方面做得非常好,并且我学会了大量使用Java容器,因为它们可以在保证出色性能的同时降低簿记的复杂性。我间歇性使用C++,但我绝对没有用java做得好,而且觉得很麻烦。我不知道C++足够工作,而不必查找每个函数,所以我很快就恢复到尽可能多地坚持java。p> 然后我突然转向汇编语言的破解和黑客攻击,因为我觉得我把太多的注意力集中在了

首先是一点背景

下面,我用C、C++和java来编写编码(通用)算法,而不是GUI和FIGH程序的接口,而是简单的命令行算法和库。 我开始学习Java编程。我在Java方面做得非常好,并且我学会了大量使用Java容器,因为它们可以在保证出色性能的同时降低簿记的复杂性。我间歇性使用C++,但我绝对没有用java做得好,而且觉得很麻烦。我不知道C++足够工作,而不必查找每个函数,所以我很快就恢复到尽可能多地坚持java。p> 然后我突然转向汇编语言的破解和黑客攻击,因为我觉得我把太多的注意力集中在了一种太高层次的语言上,我需要更多的经验来了解CPU如何与内存交互,以及1和0到底发生了什么。我不得不承认,这是迄今为止我在电脑方面最具教育意义和乐趣的经历之一

由于明显的原因,我不能每天使用汇编语言编写代码,它主要是为了娱乐消遣。在通过这个经历了解了更多的电脑之后,我意识到C++比java更接近“1和0”的水平,但我仍然觉得它非常令人迟钝,就像瑞士军刀,有太多的小发明,可以用优雅的方式完成任何一项任务。我决定试试纯香草C,很快就爱上了它。这是一个介于简单性和足够的“微观管理”之间的令人愉快的媒介,不至于抽象出真正发生的事情。然而,我确实错过了一件关于Java的事情:容器。特别是,一个简单的容器(比如stl向量)在大小上动态扩展是非常有用的,但是每次都要用C实现是非常痛苦的。因此,我的代码现在看起来几乎完全是C,容器中有C++的输入,这是我从C++中使用的唯一特性。p>
我想知道它在实践中是否考虑使用C++的一个特性,而忽略其余的C类型代码? 我觉得不错。这也是我唯一使用的C++的唯一部分。

< P>简短的答案是,“这不是真正使用C++的最有效的方法。”

正确使用时,强类型系统、通过引用的能力和RAII之类的成语使C++程序更可能是正确的、可读的和可维护的。 没有人能阻止你以你想要的方式使用这种语言。但是,你可能会因为不学习和利用实际C++特性而限制自己。


如果你编写了其他人必须阅读和维护的代码,他们可能会喜欢使用“真正的C++”,而不是“带类的C”(用前面的评论者的话来说)。

现在,我在写一个数字运算器。没有多态性,没有控制委托,没有交互<代码>是一个瓶颈,所以我用C重写了I/O

这些函数大多位于一个表示工作线程的类中。所以这与其说是OO,不如说是线程局部变量

除了
向量
,我还大量使用
。但是重载数据结构是用普通的C语言编写的。主要是循环单链表,它甚至不容易有不同的
begin()
end()
,这意味着不仅容器而且序列(和for循环)都是禁止的。然后模板帮助预处理器生成主内部循环

解决问题最自然的方法可能是正确的。你不需要寻找问题的解决方案。学习C++是一种很好的方法,但是面向对象的方法适用于一些问题而不是其他问题。
另一方面,在C++程序中使用<代码> BSCADUSE>代码> STDLIB .H./C> >是错误的。

你应该用C++来以任何方式对你来说是最有意义的。< /P>有趣!所以我不是唯一的,这比C++更适合使用C++,它是一个非常优秀的C语言。很好。但在使用STL时,不能忽略复制构造函数和赋值运算符。这是一个即将发生的意外。我同意,封装和类不变量提供了一种令人难以置信的方法来解释程序的复杂性<必须显式初始化和释放的代码>结构会引发错误。