0

構造体の配列を使用する古い C プログラムを、連結リストを使用する C++ プログラムに変換しようとしている皆さん、こんにちは。私は完全な C++ 初心者で、C++ でリンク リストを設定する構文について少し混乱しています。ここに私のコードを示します。

#include <iostream> 
#include <stdlib.h>
#include <string>
#include <ctype.h>
#include <fstream>

using namespace std;


struct Video { 
char video_name[1024];      
int ranking;                // Number of viewer hits
char url[1024];             // Video URL
struct Video *next;  // pointer to Video structure
} 


struct Video* Collection = new struct Video;
Collection *head = NULL;                    // EMPTY linked list

私の古いプログラムCollectionでは、Video. ノードCollectionのリンクリストを作成するにはどうすればよいですか? Video現在、最後の 2 行のコードで次のエラーが発生しています:expected initializer before 'Collection'expected constructor, destructor or type conversion before '*' conversion. 私の構文が間違いなく間違っていることはわかっていますが、コレクション内でビデオのリンクされたリストを作成する方法を理解していないと思います...

4

2 に答える 2

2

C++の答えは次のとおりです。

struct Video { 
    std::string video_name;     
    int ranking;                // Number of viewer hits
    std::string url;             // Video URL
} 

std::list<Video> list_of_videos
于 2012-10-07T00:12:38.810 に答える
0

Collectionビデオへのポインター型の変数として定義しました。次の行では、それを型として扱いますが、これは意味がありません。必要なのはこれだけです:

Video *head = NULL;

headリンクされたリストを表します。別の変数は必要ありません。

OTOH、本当に C++ を適切に使用したい場合は、使用パターンが何らかの方法でリンク リストのセマンティクスを保証しない限り、配列ソリューションに固執することをお勧めします。サイズが既知の配列の場合は、次の 2 つの選択肢があります。

Video videos[N];
std::array<Video, N> videos; // Preferred in C++11

それ以外の場合は、次を使用しますstd::vector<T>

std::vector<Video> videos;

それが本当にリンクされたリストでなければならない場合は、次の使用を検討してstd::list<T>ください。

std::list<Video> videos;

そのような場合はすべて、 を除外する必要がありますstruct Video *next;

于 2012-10-07T00:11:44.690 に答える