如何在C++中将指针向量转换为链表?

use*_*267 1 c++ pointers linked-list vector

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

vector<Movie*> movies;
Run Code Online (Sandbox Code Playgroud)

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

#ifndef _MovieNode_h_
#define _MovieNode_h_

#include "Movie.h"

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

#endif
Run Code Online (Sandbox Code Playgroud)

如果有人能帮助我,我会很感激.谢谢.

qua*_*dev 6

使用std::copySTL算法将您复制vectorstd::list:

std::list<Movie*> list_movies;
std::copy( movies.begin(), movies.end(), std::back_inserter( list_movies) );
Run Code Online (Sandbox Code Playgroud)

要么

std::list<Movie*> list_movies(movies.begin(), movies.end());
Run Code Online (Sandbox Code Playgroud)

编辑:

如果您有C++ 11编译器,请考虑std::forward_list 将其替换为std :: list.

  • @ user3705267:std :: list是一个双向链表,所以它是一个链表(你的链接是明确的) (2认同)