バナーをクリックすれば目次に戻ります
Copyright 1999 Rogue Wave Software
Copyright 1999 Sun Microsystems, Inc.
#include <rw/tpdlist.h> RWTPtrDlist<T> list;
注 - 標準 C++ ライブラリがない場合は、ここで説明しているインタフェースを使用してください。標準 C++ ライブラリがある場合は、クラスリファレンスの説明にあるインタフェースを使用してください。
パラメータ T はリスト内に挿入されるオブジェクトの型を表すもので、クラスまたは組み込み型です。クラス T には次のものが必要です。
#include <rw/tpdlist.h>
#include <rw/rstream.h>
#include <string.h>
class Dog {
char* name;
public:
Dog( const char* c) {
name = new char[strlen(c)+1];
strcpy(name, c);
}
~Dog() { delete name; }
// コピーコンストラクタを定義する
Dog(const Dog& dog) {
name = new char[strlen(dog.name)+1];
strcpy(name, dog.name);
}
// 代入演算子を定義する
void operator=(const Dog& dog) {
if (this!=&dog) {
delete name;
name = new char[strlen(dog.name)+1];
strcpy(name, dog.name);
}
}
// 等価テスト演算子を定義する
int operator==(const Dog& dog) const {
return strcmp(name, dog.name)==0; }
friend ostream& operator<<(ostream& str, const Dog& dog){
str << dog.name;
return str;}
};
main() {
RWTPtrDlist<Dog> terriers;
terriers.insert(new Dog("Cairn Terrier"));
terriers.insert(new Dog("Irish Terrier"));
terriers.insert(new Dog("Schnauzer"));
Dog key1("Schnauzer");
cout << "The list "
<< (terriers.contains(&key1) ? "does " : "does not ")
<< "contain a Schnauzer\n";
Dog key2("Irish Terrier");
terriers.insertAt(
terriers.index(&key2),
new Dog("Fox Terrier")
);
Dog* d;
while (!terriers.isEmpty()) {
d = terriers.get();
cout << *d << endl;
delete d;
}
return 0;
}
|
The list does contain a Schnauzer Cairn Terrier Fox Terrier Irish Terrier Schnauzer |
RWTPtrDlist<T>();
RWTPtrDlist<T>(const RWTPtrDlist<T>& c);
RWTPtrDlist& operator=(const RWTPtrDlist<T>& c);
T*& operator[](size_t i); T* const& operator[](size_t i) const;
void append(T* a);
void apply(void (*applyFun)(T*, void*), void* d);
void yourFun(T* a, void* d);
T*& at(size_t i); T* const& at(size_t i) const;
void clear();
void clearAndDestroy();
RWBoolean contains(const T* a) const;
RWBoolean contains(RWBoolean (*testFun)(T*, void*),void* d) const;
RWBoolean yourTester(T*, void* d);
size_t entries() const;
T* find(const T* target) const;
T* find(RWBoolean (*testFun)(T*, void*),void* d,) const;
RWBoolean yourTester(T*, void* d);
T*& first(); T* const& first() const;
T* get();
size_t index(const T* a);
size_t index(RWBoolean (*testFun)(T*, void*),void* d) const;
RWBoolean yourTester(T*, void* d);
void insert(T* a);
void insertAt(size_t i, T* a);
RWBoolean isEmpty() const;
T*& last(); T* const& last() const;
size_t occurrencesOf(const T* a) const;
size_t occurrencesOf(RWBoolean (*testFun)(T*, void*),void* d)const;
RWBoolean yourTester(T*, void* d);
void prepend(T* a);
T* remove(const T* a);
T* remove(RWBoolean (*testFun)(T*, void*),void* d);
RWBoolean yourTester(T*, void* d);
size_t removeAll(const T* a);
size_t removeAll(RWBoolean (*testFun)(T*, void*),void* d);
RWBoolean yourTester(T*, void* d);
T* removeAt(size_t i);
T* removeFirst();
T* removeLast();
RWvostream& operator<<(RWvostream& strm, const RWTPtrDlist<T>& coll); RWFile& operator<<(RWFile& strm, const RWTPtrDlist<T>& coll);
RWvistream& operator>>(RWvistream& strm, RWTPtrDlist<T>& coll); RWFile& operator>>(RWFile& strm, RWTPtrDlist<T>& coll);
RWvistream& operator>>(RWvistream& strm, RWTPtrDlist<T>*& p); RWFile& operator>>(RWFile& strm, RWTPtrDlist<T>*& p);
