c++ - 为了成为一名 C++ 程序员,我应该始终使用 std::vector 而不是创建自己的链表吗?

标签 c++

<分区>

现在我正在为 Windows Phone 应用创建一个名为 Stopwatch 的类。我需要一个动态数据来像秒表一样添加圈数。也就是说,如果用户在秒表运行时按下 lap 按钮,它会添加一个数据结构

struct lap
{
   unsigned double start;
   unsigned double stop;
}

(在我的 Stopwatch 类中定义为私有(private)变量)到某种保存所有圈数的动态数据结构的末尾。

现在,Bjarne Stroustrup 自己说我们应该始终在链表上使用std::vector:https://www.youtube.com/watch?v=YQs6IC-vgmo .所以C++之主告诉我,我应该有

std::vector<Stopwatch::lap> Laps;

作为我类(class)的私有(private)变量。然而,与此同时,我不需要 std::vector 的所有功能,因为我唯一要用它的是遍历元素并使用 push_back()。我是否应该创建另一个仅限于我需要的功能的通用链表类?

最佳答案

如果你需要一个链表,你可以使用std::list。但是链表很少是正确的工具。在我看来,编程书籍和类(class)的压力太大了。 C++ 中动态调整大小的序列容器的默认选择是 std::vector。所以使用它。如果您不需要额外的功能,请不要使用它(不需要的功能)。它不花你一分钱。不要浪费时间实现另一个冗余且有问题的序列容器。

关于c++ - 为了成为一名 C++ 程序员,我应该始终使用 std::vector 而不是创建自己的链表吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22802887/

相关文章:

时间:2018-01-08 标签:c++mfc: update HWND through a control box

c++ - bool 数组获取意外的默认值

c++ - 从FILE *指针创建fstream对象

c++ - OpenSceneGraph 第一人称步行相机

c++ - -llibrary 如何确定和定位对象文件名

c++ - "QObject::startTimer: timers cannot be started from another thread"没有计时器 && CPU 消耗

c++ - Visual Studio 显示错误的 SEH 异常位置

c# - 将 C# 项目添加到 Visual Studio 2008 中的现有 C++ 项目

c++ - GCC/Windows DLLs/C++ STL 前端有什么改进吗?

c++ - C++中前缀表达式的递归评估