listクラスでもoperator[]が使えれば便利だと思うんだ。

アバター
MoNoQLoREATOR
記事: 284
登録日時: 14年前
住所: 東京

listクラスでもoperator[]が使えれば便利だと思うんだ。

投稿記事 by MoNoQLoREATOR » 14年前

というわけで、9割方 書き終わりました。

以下ソースコード

CODE:

#include 

template 

class slist{
	std::list myList;

	public:

	SLIST& operator[] (const int &num){
		std::list::iterator it = myList.begin();
		for(int i=0;i &list){		myList.merge(list);	}
	void pop_back(){		myList.pop_back();	}
	void push_back(SLIST &ele){		myList.push_back(ele);	}
	void remove(SLIST &ele){		myList.remove(ele);	}
	void resize(const int num){		myList.resize(num);	}
	unsigned int size(){		return myList.size();	}
	void sort(){		myList.sort();	}

	std::list& operator= (std::list &list){
		myList = list;
		return *myList;
	}

	std::list& operator+ (std::list &list){
		return myList + list;
	}

	std::list& operator+ (SLIST &ele){
		return myList + ele;
	}

	void operator+= (std::list &list){
		myList.merge(list);
	}

	void operator+= (SLIST &ele){
		myList.push_back(ele);
	}

	void operator-- (void){
		myList.pop_back();
	}

	void operator! (void){
		myList.clear();
	}
};

int main(){}
あとはちゃんと動作するかテストするぐらいですね。(operator+のところが怪しい)
しかし、1つだけ実装していない機能があります。
sort()
です。本家listクラスでは、オプションとしてソート方法を設定できるらしいですが、私には理解できませんでした。ためしに

CODE:

void sort(){		myList.sort();	}
	void sort(Comparison comp){
		myList.sort(comp);
	}
としてみたのですが、「構文エラー : 識別子 'Comparison'」と言われてしまいました。何かをインクルードしなくてはいけないのですかね?(でもVisualC++であれば必要ないはずですが)
しかもlistクラスにはあと2種類あるんですよね。型がわからないことにはどうしようもないぜ・・・。
わかる方おねがいします。

アバター
MoNoQLoREATOR
記事: 284
登録日時: 14年前
住所: 東京

Re: listクラスでもoperator[]が使えれば便利だと思うんだ。

投稿記事 by MoNoQLoREATOR » 14年前

あれ?全部コメントアウトしてprintf("TRUE\n");と書いただけでも同じ症状・・・。

アバター
MoNoQLoREATOR
記事: 284
登録日時: 14年前
住所: 東京

Re: listクラスでもoperator[]が使えれば便利だと思うんだ。

投稿記事 by MoNoQLoREATOR » 14年前

デバッグありで実行すると「続行するにはなにかキーを押してください・・・」という処理をやってくれないんですね。