【问题标题】:How can I convert a vector of pointers to a linked list in C++?如何将指针向量转换为 C++ 中的链表?
【发布时间】:2014-06-04 02:05:35
【问题描述】:

我在理解链表时遇到了一些问题。我在网上看到的一切似乎都在告诉我不同​​的事情。我有一个指向电影对象的指针向量,声明为:

vector<Movie*> movies;

我想将其转换为电影对象的链接列表。这是我的 MovieNode 类:

#ifndef _MovieNode_h_
#define _MovieNode_h_

#include "Movie.h"

class MovieNode{
public:
    Movie movieData;
    MovieNode* nextMovie;
};

#endif

如果有人可以帮助我,我将不胜感激。谢谢。

【问题讨论】:

  • 你应该使用 std::list 电影;除非你有很好的理由来滚动你自己的链表类。
  • 为什么需要链表?访问你的向量有什么问题?你没有告诉你打算用这个向量/列表做什么和/或你目前遇到的问题是什么。

标签: c++ pointers vector linked-list


【解决方案1】:

使用std::copy STL 算法将您的vector 复制到std::list

std::list<Movie*> list_movies;
std::copy( movies.begin(), movies.end(), std::back_inserter( list_movies) );

或者

std::list<Movie*> list_movies(movies.begin(), movies.end());

编辑:

如果您有 C++11 编译器,请考虑将 std::forward_list as a possible alternative 转换为 std::list。

【讨论】:

  • 你可以只使用构造函数:std::list&lt;Movie*&gt; list_movies(movies.begin(), movies.end());
  • 我认为std::listlinked lists 不同。
  • @Benjamin:当然,您要我编辑还是添加答案?
  • @user3705267 : std::list 是一个双向链表,所以它是一个链表(你的链接明确了这一点)
  • @user3705267:这回答了你的问题吗?
猜你喜欢
  • 2016-08-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多