Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/140.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++程序员,我应该始终STD::向量,而不是自己制作链表?_C++ - Fatal编程技术网

为了成为C++程序员,我应该始终STD::向量,而不是自己制作链表?

为了成为C++程序员,我应该始终STD::向量,而不是自己制作链表?,c++,C++,现在我正在为Windows phone应用程序制作一个名为秒表的课程。我需要一个动态数据来像秒表一样增加圈数。也就是说,如果用户在秒表运行时按下“圈”按钮,则会添加一个数据结构 struct lap { unsigned double start; unsigned double stop; } 定义为Stopwatch类中的一个私有变量,以某种动态数据结构结尾,该结构可以节省所有的圈数 现在,比亚恩·斯特罗斯图普自己说,我们应该始终在链表上使用std::vector:。所以C++

现在我正在为Windows phone应用程序制作一个名为秒表的课程。我需要一个动态数据来像秒表一样增加圈数。也就是说,如果用户在秒表运行时按下“圈”按钮,则会添加一个数据结构

struct lap
{
   unsigned double start;
   unsigned double stop;
}
定义为Stopwatch类中的一个私有变量,以某种动态数据结构结尾,该结构可以节省所有的圈数

现在,比亚恩·斯特罗斯图普自己说,我们应该始终在链表上使用std::vector:。所以C++的主讲我应该有<
std::vector<Stopwatch::lap> Laps;

作为类中的私有变量。但是,同时,我不需要几乎所有的std::vector功能,因为我将使用它的唯一目的是迭代元素并使用push_-back。我是否应该创建另一个仅限于所需功能的通用链表类

如果需要链表,可以使用std::list。但链表很少是正确的工具。在我看来,编程书籍和课程的压力太大了。C++中动态可重排序容器的默认选择是STD::vector。所以使用它。如果你不需要额外的功能,就不要用它来替代不需要的功能。它不花你一分钱。不要浪费时间实现另一个冗余且有缺陷的序列容器。

如果需要链表,可以使用std::list。但链表很少是正确的工具。在我看来,编程书籍和课程的压力太大了。C++中动态可重排序容器的默认选择是STD::vector。所以使用它。如果你不需要额外的功能,就不要用它来替代不需要的功能。它不花你一分钱。不要浪费时间实现另一个冗余且有缺陷的序列容器。

不需要标准类提供的所有可用功能是编写自己的序列容器的糟糕理由。如果每个人都遵循这个逻辑,我们就会有大量的非标准类,它们只提供标准类功能的子集

此外,编写表示抽象数据结构的类并不是一件小事,您自己的实现比标准实现更可能存在bug,并且可能不会得到优化


最后,使用提供了比您使用的更多功能的类并不是资源的显著消耗。这一功能主要只是方法实现,它们不会占用大量的空间

不需要标准类提供的所有可用功能是编写自己的类的一个不好的理由。如果每个人都遵循这个逻辑,我们就会有大量的非标准类,它们只提供标准类功能的子集

此外,编写表示抽象数据结构的类并不是一件小事,您自己的实现比标准实现更可能存在bug,并且可能不会得到优化


最后,使用提供了比您使用的更多功能的类并不是资源的显著消耗。这一功能主要只是方法实现,它们不会占用大量的空间

std算法和容器使用可重用和可扩展的高效代码库。您应该考虑其他程序员应该能够简单地理解代码并重用或扩展代码。定期使用std容器更好。这是因为大多数程序员都熟悉std,而且std中的大多数算法都经过了非常优化,我怀疑您能否编写出比std::sort更快的东西


除非性能需求非常关键,或者容器需求非常具体,否则可能别无选择,只能从头开始实现容器

std算法和容器使用可重用和可扩展的高效代码库。您应该考虑其他程序员应该能够简单地理解代码并重用或扩展代码。定期使用std容器更好。这是因为大多数程序员都熟悉std,而且std中的大多数算法都经过了非常优化,我怀疑您能否编写出比std::sort更快的东西


除非性能需求非常关键,或者容器需求非常具体,否则可能别无选择,只能从头开始实现容器

仅供参考,Bjarne Stroustrup是C++的创建者,vector与链表不同。创建第一个容器结构很有趣。。。乐趣在第二天、第三天开始消失。。。顺便说一句,向量不是链表。这完全是基于观点的,因为这两种方法都有效。就个人而言,我认为您不应该创建新的collection类。很可能,您会引入bug,或者浪费大量时间测试它。向量
很好用,为什么不用呢。例如,我不会再买一辆新车,因为我现在的车可以做的比要求的多。@user3474967 Offtopic:所以,比亚恩推荐vectors而不是List。好啊但您仍然会问是否必须重新执行列表。不是向量。逻辑在哪里?也许,你需要检查一下,Bjarne Stroustrup是C++的创建者,vector与链表不同。创建第一个容器结构很有趣。。。乐趣在第二天、第三天开始消失。。。顺便说一句,向量不是链表。这完全是基于观点的,因为这两种方法都有效。就个人而言,我认为您不应该创建新的collection类。很可能,您会引入bug,或者浪费大量时间测试它。vector很好用,为什么不使用它呢。例如,我不会再买一辆新车,因为我现在的车可以做的比要求的多。@user3474967 Offtopic:所以,比亚恩推荐vectors而不是List。好啊但您仍然会问是否必须重新执行列表。不是向量。逻辑在哪里?也许,你需要进一步检查,向量被优化了。此外,向量被优化了。