⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 category.cpp

📁 本程序给出了SSD5实验课中Exercise6的参考程序 内附有详细的注释 下载后请仔细参照源代码进行分析 切莫完全搬照
💻 CPP
字号:
#include"Category.h"
#include<iostream>
using namespace std;

Category::Category(void):number(0),parent(0),name(""){}

Category::Category(int parent, string name){
	this->parent = parent;
	this->name = name;
}

int Category::getNumber() const{
	return number;
}

int Category::getParent() const{
	return parent;
}

string Category::getName() const{
	return name;
}
	
void Category::setNumber(int i){
    number = i;
}

void Category::setParent(int j){
	parent = j;
}

void Category::setName(string k){
	name = k;
}

vector<int>::iterator Category::itemsBegin(){
	return items.begin();
}

vector<int>::iterator Category::itemsEnd(){
	return items.end();
}

vector<Category*>::iterator Category::subCategoriesBegin(){
	return sub_categories.begin();
}

vector<Category*>::iterator Category::subCategoriesEnd(){
	return sub_categories.end();
}

void Category::addSubCategory(Category* m){
	sub_categories.push_back(m);
}

void Category::addItem(int n){
	items.push_back(n);
}

void Category::findOfferings (Listing::iterator start, 
					Listing::iterator finish, Listing &matches){
	Listing::iterator i;
	vector<int>::iterator j;

	for(i = start; i != finish; i++){
		for(j = itemsBegin(); j != itemsEnd() ; j++){
			if(*j = (*i)->getNumber()){
				matches.add(*i);
			}
		}
	}

}

void Category::findOfferingsRecursive (Listing::iterator start, 
							 Listing::iterator finish, Listing &matches){
	Listing::iterator m;
	vector<int>::iterator n;
	vector<Category*>::iterator p;

	for(m = start; m != finish; m++){
		for(n = itemsBegin(); n != itemsEnd() ; n++){
			if(*n = (*m)->getNumber()){
				matches.add(*m);
			}
		}
	}

	for(p = subCategoriesBegin(); p != subCategoriesEnd(); p++){
		(*p) -> findOfferingsRecursive(start, finish, matches) ;
	}
}

bool Category::operator==(const Category& rhs){
	return number == rhs.getNumber();
}

istream &operator>>(istream &stream, Category &c){
	int i;
	string j;

	stream >> i;
	stream.get();
	c.setParent(i);

	getline(stream,j);
	c.setName(j);

	return stream;

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -