口コミ 未整列Stringリストをつかったあれこれ - Arkansas Freeway式blog -アーカンソーフリーウェイ式ブログ-
FC2ブログ

Arkansas Freeway式blog -アーカンソーフリーウェイ式ブログ-
Arkansas Freeway式blog -アーカンソーフリーウェイ式ブログ-

cameraddict達の雑記用ブログです 
カレンダー
10 | 2019/11 | 12
- - - - - 1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30

2009.03.04[水] 未整列Stringリストをつかったあれこれ

授業のメモ的に投下。

興味ない人は飛ばしちゃってください(笑)



by くま
/*header file name is "ListType.h"*/

#ifndef LISTTYPE__H
#define LISTTYPE__H
#include
class ListType{
public:
ListType(std::size_t = 10);
~ListType();
bool empty() const;
bool full() const;
void erase(const std::string&);
bool find(const std::string&);
void insert(const std::string&);
std::size_t size();
friend std::ostream& operator << (std::ostream&, const ListType&);

protected:
std::string *items;
std::size_t count;
std::size_t maxsize;
};
#endif



/*outside module named "ListType.cpp"*/

#include "ListType.h"
#include
#include

ListType::ListType(std::size_t max){ //default constructor
count = 0;
maxsize = max;
items = new std::string[maxsize];
}

ListType::~ListType(){ //destructor
delete[] items;
}

bool ListType::empty() const{ //use when you want to know whether the ListType is empty or not.
return count == 0;
}

bool ListType::full() const{ //use when you want to know whether the ListType is full or not.
return count == maxsize;
}

void ListType::erase(const std::string& eraseItem){//erase "a string item" from the list.
int loc = 0;
bool erased = false;
while (loc < count && find(eraseItem) && !erased){
if (items[loc] == eraseItem){//erase if the item is found
items[loc] = items[count-1];
--count;//decrement
erased = true;
}
else loc++;
}
}

bool ListType::find(const std::string& item){//use when you want to know there is a item you are looking for in the list
int loc = 0;
bool found = false;
while (loc < count && !found){
if (items[loc] == item)
found = true;
++loc;
}
return found;
}

void ListType::insert(const std::string& newItem){//insert "a string item" to the last of the list
if(!full()){
items[count] = newItem;
count++;
}
}



std::size_t ListType::size(){//return the maxsize
return maxsize;
}

std::ostream& operator<< (std::ostream& cout, const ListType& ListType){//overload << in order to be able to use cout function for the class, like "cout << ClassName".
cout << "items = [";
for (int i = 0; i < ListType.count; i++){//loop to output items[]
cout << " " << ListType.items[i] << " ";
}
cout << "]" << std::endl;
return cout;
}



ランキングに参加しています。
↓をクリックしていただけると、
とってもありがたいです

ブログランキング・にほんブログ村へ
    23:27  Trackback : 0  Top
Trackback
http://arkansasfreeway.blog116.fc2.com/tb.php/66-91e0a0fd
プロフィール

Arkansas Freeway


Arkansas Freeway
の雑記用のブログです。

アメリカはアーカンソー州の田舎町ラッセルビル(Russellville)にあるアーカンソーテック大学(Arkansas Tech University)に在学中の
【Nikon D80使いの しゅーと】
【Canon Kiss X3使いの ちさと】
というCameraddict(camera+addict)なくせ者が適当に更新していきます。できるだけ良い作品を撮ろうと日々更新していきますので、お付き合いください。。。

【OB紹介】
Canon EOS 5DMK2使いの くま
Nikon D300使いの けいすけ
Pentax SP1000使いの たかゆき