2Принципал покажи где тут нужно считать? Вот тебе конкретный код на C++, он выполняет конкретные действия - реализует частично паттерн "курсор", покажи мне где тут нужно считать?
QUOTE | /*©onehalf3554*/ template <typename T> class ListContainer { protected: typedef vector<T> vec_ch; vec_ch container; long InternalPageCount; private: u_int lc_PageSize; u_int StartPage; vec_ch Page; vec_ch ::iterator container_iterator; protected: void Addvector(vec_ch lc) {this->container.reserve(lc.size()); this->container.assign(lc.begin(),lc.end());} private: void GetPage(u_int StartElement,u_int EndElement) {
this->Page.clear(); this->Page.assign(container.begin()+StartElement, container.begin()+StartElement+EndElement); } protected: u_int GetSizeOfContainer() { return (container.size()); } ListContainer():lc_PageSize(0),StartPage(0),InternalPageCount(0){ this->clear(); }; ListContainer(T InParam):lc_PageSize(1),StartPage(0),InternalPageCount(0) { this->clear(); this->add(InParam) ;};
ListContainer(ListContainer &lc):StartPage(1),InternalPageCount(0) { Addvector(lc.container); SetPageSize(lc.container.size()); }; void operator = (ListContainer lc) {this->Addvector(lc.container);} ListContainer operator +=(ListContainer lc) {copy(lc.container.begin(), lc.container.end(), back_inserter(this->container)); return *this;} // ╥єЄ яхЁхюяЁхфхышы юяхЁрЄюЁ , фы ЁрсюЄ√ ё // ¤ыхьхэЄрьш ёяшёър 16:26 28/09/04 void add(T Element) {container.push_back(Element);} /* ------------------------------------------------------- This a debug code, if you need , you may uncomented it.
void couter() { for (container_iterator =container.begin(); container_iterator != container.end(); container_iterator++){ cout << *this->container_iterator << endl;} } void PageOut() { for (container_iterator =Page.begin(); container_iterator != Page.end(); container_iterator++){ cout << *this->container_iterator << endl;} } --------------------------------------------------------- */ void DeleteElement(u_int ElementNum) { this->container.erase(container.begin()+ElementNum);} void DeleteInterval(u_int StartNum,u_int EndNum) { this->container.erase(container.begin()+(StartNum+1),container.begin()+(EndNum+1));
} void SetPageSize(u_int SizeOfListPage) {lc_PageSize = SizeOfListPage;} u_int GetPageSize() const {return (lc_PageSize);} void clear() {this->container.clear();} void SetStartPage(u_int StartPage) {this->InternalPageCount = 0; this->StartPage = StartPage;}
int NextPage() {
u_int EndElement = 0; if (this->InternalPageCount < (container.size()-GetPageSize())) { InternalPageCount += GetPageSize(); InternalPageCount = ((container.size()-this->InternalPageCount)<GetPageSize())? (container.size() - GetPageSize()):InternalPageCount; EndElement = ((container.size()-this->InternalPageCount)>GetPageSize())? GetPageSize():(container.size()-this->InternalPageCount); }
//╚чьхэхэш с√ыш ёчфхё№!!!!1 if (EndElement == 0){ EndElement =GetPageSize(); InternalPageCount = container.size() - GetPageSize();} // cout << " ipc= " << InternalPageCount << endl; // cout << " ee= " << EndElement << endl; if (InternalPageCount<this->container.size()){ GetPage(this->InternalPageCount,EndElement); return (0); } else {return (-1);} } int PrevPage() { u_int EndElement = 0; if (this->InternalPageCount>=GetPageSize()) {this->InternalPageCount -= GetPageSize();} else {this->InternalPageCount = 0;} if (this->InternalPageCount>=GetPageSize()) {EndElement = GetPageSize();} else {EndElement = (GetPageSize() - this->InternalPageCount);} if (InternalPageCount>=0) { GetPage(this->InternalPageCount,EndElement) ; return (0); }else { return (-1);} }
void NextElement() { long EndElement = 0; if (InternalPageCount<container.size())InternalPageCount++; if (InternalPageCount>=container.size())InternalPageCount = container.size() ;
EndElement = ( ( container.size() - InternalPageCount ) > GetPageSize() )? GetPageSize():(container.size()-InternalPageCount); if ( ((InternalPageCount+EndElement)<=container.size()) && (EndElement>(GetPageSize() -1)) ) GetPage(InternalPageCount,EndElement); }
void PrevElement() { long EndElement = 0; if (this->InternalPageCount>0) --this->InternalPageCount; EndElement = (this->InternalPageCount<=( container.size()-GetPageSize()))? GetPageSize():(container.size()-InternalPageCount); if ((0>=InternalPageCount) && (container.size()<GetPageSize())) EndElement = container.size(); if (InternalPageCount>=0) GetPage(this->InternalPageCount,EndElement) ; } u_int Position(void) const { return (this->InternalPageCount); }
u_int GetProgress() const { u_int Progress = 0; Progress =((this->container.size()+1)/100)*this->InternalPageCount; return (Progress); } void GetPageOut(T PageOut[]) {int i =0; for (container_iterator =Page.begin(); container_iterator != Page.end(); container_iterator++){ PageOut[i].erase(); PageOut[i] = *this->container_iterator; i++;} } T GetElement(u_long Index) { if ((Index<=GetSizeOfContainer())&&(Index>=0)) return (container[Index]); }
void SetElement (long Index,T Element) { if ((Index<=this->GetSizeOfContainer())&&(Index>=0)) container[Index] = Element; }
int FirstPage() { InternalPageCount = 0; u_int EndElement = 0; EndElement = ((container.size()-this->InternalPageCount)>=GetPageSize())? GetPageSize():(container.size()-this->InternalPageCount); if (InternalPageCount<this->container.size()){ GetPage(this->InternalPageCount,EndElement); return (0); } else return (-1); } void Last() { InternalPageCount = container.size()-GetPageSize(); u_int EndElement = container.size(); if (InternalPageCount<this->container.size()){ GetPage(this->InternalPageCount,EndElement); return (0);} else return (-1); } };
|
Про художников незнаю и танцоров , но про программистов коечто знаю в отличие от многих тут присутствующих ;)
|