stl 컨테이너(vs 2019)

3101 단어
//p15-용기 프로젝트 테스트.cpp: 이 파일은 "main"함수를 포함합니다.프로그램 실행은 여기서 시작하고 끝납니다.//
/* 5.프로젝트 실전 회고 수요: 프로그래머 잭의 팀은 밑바닥 프로젝트를 새로 인수했다. 프로젝트 매니저는 잭에게 유니버설 용기를 실현하고 다양한 일반 유형(int char float double 등 포함)과 사용자 정의 구조체와 사용자 정의 클래스의 대상을 삽입할 수 있으며 각 유형의 비교 규칙에 따라 용기에서 가장 크거나 가장 작은 값이나 대상을 얻을 수 있도록 지원할 수 있다.
통용 용기 분석 - 자체 개발 or STL 기존 용기 재사용?다양한 유형 삽입 지원 - 템플릿이 아닌 최대 최소값 - 함수 대상 (모방 함수)?or set/multiset
인터페이스 설계 - sizeFilter 구조 함수 대입 연산자 재부팅 크기 삽입 및 삭제 찾기 최대값 및 최소값 찾기
*/
#pragma once//demo 15_43 #ifndef SIZEFILTER #define SIZEFILTER
#include #include
template class _Container = set<_ty>> class sizeFilter { public: typedef sizeFilter<_ty _container=""> _Myt; typedef typename _Container::size_type size_type; typedef typename _Container::value_type value_type;
	sizeFilter() : c() {
		//  , 
	}

	sizeFilter(const _Myt& _Right) : c(_Right.c) {
		//  , sizeFilter 
	}

	sizeFilter(const _Container& _Cont) : c(_Cont) {
		//  , 
	}

	_Myt& operator=(const _Myt& _Right) {    // A=B=C=D
		// sizeFilter  
		c = _Right.c;
		return (*this);
	}

	bool empty() const {
		//   SizeFilter  
		return (c.empty());
	}


	size_type size() const {
		//   SizeFilter  
		return (c.size());
	}

	bool insert(const value_type& _Val) {
		//  

		/*pair<:iterator bool=""> ret = c.insert(_Val);
		if(ret.second){
			std::cout< 0) {
			return true;
		}

		return false;
	}

	std::pair  getMin() {
		// 

		std::pair  ret;
		typename _Container::iterator min = c.begin();

		if (min != c.end()) {// 
			ret.first = *min;
			ret.second = true;
			return ret;
		}

		ret.second = false;
		return ret;
	}


	std::pair getMax() {
		// 

		std::pair  ret;

		typename _Container::iterator end = c.end();
		if (c.size() > 0) {
			ret.first = *(--end);
			ret.second = true;
		}
		else {
			ret.second = false;
		}

		return ret;
	}

protected:
	_Container c;

};
#endif
#include #include
using namespace std;
int main() { std::cout << “Hello World!”; sizeFilter sf;
for (int i = 0; i < 10; i++)
{
    sf.insert(i * 5);
}

sf.erase(0);
sf.erase(5);

cout << " " << endl;

// 

std::pair pb1 = sf.getMax(); if (pb1.second) { cout << “max:” << pb1.first << endl; } else { cout << “Not found” << endl; }
// 
std::pairpb2 = sf.getMin();
if (pb2.second)
{
    cout << "min:" << pb2.first << endl;
}

}
//실행자: Ctrl + F5 또는 디버깅 > 실행 시작 (디버깅하지 않음) 메뉴//디버깅자: F5 또는 디버깅 > 디버깅 시작 메뉴
//입문 사용 기교://1.솔루션 리소스 매니저 창을 사용하여 파일 추가/관리//2.팀 자원 관리자 창을 사용하여 원본 코드 관리에 연결//3.출력 창을 사용하여 출력 및 기타 메시지 생성 보기//4.오류 목록 창을 사용하여 오류 보기//5.[프로젝트] > [새 항목 추가]로 이동하여 새 코드 파일을 만들거나 [프로젝트] > [기존 항목 추가]로 이동하여 기존 코드 파일을 프로젝트에 추가//6.나중에 이 항목을 다시 열려면 [파일] > [열기] > [프로젝트]로 이동하여 선택합니다.sln 파일

좋은 웹페이지 즐겨찾기