listを用いた成績管理

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
list

listを用いた成績管理

#1

投稿記事 by list » 7年前

list のスタック処理を行いたいのですが、C++におけるSTLのlistの参照方法がいまいち分かりません。
この場合ですと、どのように用いればよいのでしょう?

コード:

#include <iostream>
#include <string>
#include <list>

// 学生1人分の記録
class Record {
	public:
		int id;
		std::string name;
		int score;
		Record () {}
		Record (int i, const std::string& nm, int s) {
			id = i;
			name = nm;
			score = s;
		}
};

std::ostream& operator<< (std::ostream& os, const Record& r) {
	os << "[" << r.id << "]" << r.name << " : " << r.score;
	return os;
}


// 成績簿 (全学生の記録)
class Seiseki {
	public:
		std::list<Record> data; // ここをC言語のポインタ配列にしたい
		void insert (int, const std::string&, int);
		void lookup (int) const;
		void erase_worst();
};

std::ostream& operator<< (std::ostream& os, const Seiseki& s) {
	os << "*** 成績簿 ***\n";
	for (std::list<Record>::const_iterator p = s.data.begin();
	p != s.data.end(); p++) {
		os << *p <<"\n";
	}
	
	return os;
}
//以下の関数を使ってSeisekiのdataにスタック操作をしたい
void Seiseki::insert (int id, const std::string& nm, int s) {
	std::list<Seiseki> d;
	
	d.push_back ( Record (id, nm, s) ); 
}

int main (void)
{
	Seiseki s;
	
	// 成績の登録
	s.insert (7001, "aaaa", 89);
	s.insert (7123, "bbbb", 70);
	s.insert (7013, "cccc", 55);
	s.insert (7200, "dddd", 99);
	s.insert (7087, "eeee", 83);
	
	// 全学生の成績の表示
	std::cout << s;
	
	
	return 0;
}

list

Re: listを用いた成績管理

#2

投稿記事 by list » 7年前

解決しました。

コード:

void Seiseki::insert (int id, const std::string& nm, int s) {
	Seiseki::data.push_back (Record (id, nm, s));
}

返信

“C言語何でも質問掲示板” へ戻る