category.cpp

来自「1.注册功能 2.登录功能 3.退出系统功能 4.发布新广告功能 5.添」· C++ 代码 · 共 114 行

CPP
114
字号
#include <string>
#include <vector>
#include <iterator>

#include "Category.h"
#include "Listing.h"

using namespace std;


Category::Category(void)
{
   number=0;
   parent=0;
   name="";

	/*sub_categories=NULL;
	items=NULL;*/
}
Category::Category(int parent, string name)
{
	this->parent=parent;
	this->name=name;
}
int Category::getNumber(void) const
{
	return this->number;
}
int Category::getParent(void) const
{
	return this->parent;
}
string Category::getName(void) const
{
	return this->name;
}
void Category::setNumber(int num)
{
	number=num;
}
void Category::setParent(int par)
{
	parent=par;
}
void Category::setName(string nm)
{
    name=nm;
}
void Category::addSubCategory(Category* cago)
{
      sub_categories.push_back(cago);
}
void Category::addItem(int num)
{
	items.push_back(num);
}
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::findOfferings (Listing::iterator start, 
					Listing::iterator finish, Listing &matches)
{   
	Listing::iterator itr_adv; 
    for (vector<int>::iterator current=items.begin();current!=items.end();current++)
	{
       for (itr_adv=start;itr_adv!=finish;itr_adv++)
	   {
		   int adv_num=(*current);
		   if((*itr_adv)->getNumber()==adv_num) 
		   {
			   matches.add(*itr_adv);
			   break;
		   }
	   }
	}
}
void Category::findOfferingsRecursive (Listing::iterator start, 
					Listing::iterator finish, Listing &matches)
{    
	 findOfferings(start,finish,matches);
     if (sub_categories.size()==0) return;
     vector<Category*>::iterator itr_subcate;
	 for(itr_subcate=subCategoriesBegin();itr_subcate!=subCategoriesEnd();itr_subcate++)
	 (*itr_subcate)->findOfferingsRecursive (start, finish,matches);
}

bool Category::operator==(const Category& rhs)
{
	return this->number==rhs.getNumber();
}
istream &operator>>(istream &stream, Category &c)
{
	    int parent_id;
		string name;
		(stream>>parent_id).get();
		(stream>>name).get();
		c.setParent(parent_id);
		c.setName(name);
		return stream;
}

⌨️ 快捷键说明

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