STL 용기

11809 단어
STL 표준 템 플 릿 라 이브 러 리 개요
용기 개요: 각종 유형의 데이터 (기본 유형의 변수, 대상 등) 를 저장 할 수 있 는 데이터 구 조 는 모두 템 플 릿 으로 세 가지 로 나 눌 수 있 습 니 다.
1.    :vector,deque,list
2.    :  set,multiset,map,multimap
3.     :stack,queue,priority_queue

vector 헤더 파일: 동적 배열 요 소 는 메모리 에 연속 으로 저 장 됩 니 다.모든 요 소 를 무 작위 로 액세스 하면 상수 시간 에 완성 할 수 있 습 니 다.끝부분 에서 요 소 를 삭제 하 는 것 은 비교적 좋 은 성능 을 가지 고 있다 (대부분의 경우 상수 시간).deque 헤더 파일 양 방향 대기 열.요 소 는 메모리 에 연속 으로 저 장 됩 니 다.모든 요 소 를 무 작위 로 액세스 할 수 있 습 니 다.양 끝 에서 삭제 요 소 는 비교적 좋 은 성능 을 가지 고 있다 (대부분의 경우 상수 시간).list 헤더 파일: 양 방향 링크.요 소 는 메모리 에 연속 으로 저장 되 지 않 습 니 다.모든 위치 에서 요 소 를 삭제 하면 상수 시간 에 완성 할 수 있 으 며 무 작위 액세스 가 지원 되 지 않 습 니 다.관련 용기 프로필 요 소 는 정렬 된 모든 요 소 를 삽입 하 는 것 입 니 다. 해당 정렬 규칙 에 따라 위 치 를 확인 합 니 다. 찾 을 때 좋 은 성능 을 가지 고 있 습 니 다. 보통 균형 이 잡 힌 이 진 트 리 방식 으로 이 루어 집 니 다. 삽입 과 검색 시간 은 O (log (n) set / mliset 헤더 파일 set 즉 집합 입 니 다.set 에 서 는 같은 요 소 를 허용 하지 않 습 니 다. multiset 에 서 는 같은 요소 map / multimap 헤더 파일 map 와 set 가 존재 하 는 것 을 허용 합 니 다. map 에 저 장 된 요 소 는 두 개의 구성원 변수 만 있 고 하 나 는 first 이 며 하 나 는 second 입 니 다. map 는 first 값 에 따라 요 소 를 큰 것 에서 작은 것 으로 정렬 하고 first 에 따라 요 소 를 빠르게 검색 할 수 있 습 니 다.stack: 헤더 파일 큐: 헤더 파일 priority큐 헤더 파일
순서 용기 와 관련 용기 에 있 는 구성원 함수
begin                  
end                          
rbegin	                 
rend                        
erase                
clear	          

순서 용기 의 상용 멤버 함수
front:             
back:              
push_back:          
pop_back:         
erase:          (          ),        ,                  

교체 기
함수 대상 이 하나의 클래스 가 연산 자 "()" 를 다시 불 러 오 면 이 클래스 의 대상 은 함수 대상 이 됩 니 다.
class CMyAverage{//     
	public:
	double operator()(int a1,int a2,int a3){
		return (double)(a1+a2+a3)/3;
	}
};
CMyAverage average;//    
cout<<average(3,2,3);//average.operator()(3,2,3)

출력
vectorname; 1 차원 배열 과 마찬가지 로 type: name 도 모든 데이터베이스 형식 일 수 있 습 니 다. 그러나 type: name 도 STL 용기 라면 정의 할 때 > 기호 사이 에 빈 칸 을 추가 하 는 것 을 기억 하 십시오.vector name; vector name; vector name; vector name; type: name 이 vector: vector name 이 라면; / > >사이 에 빈 칸 을 넣 어야 한다.
vector 용기 내 요소 접근
      
vectorvi   ,vi[0],vi[1]
       
vector::iterator it;
   it
  
vector<int> vi;
for(int i=1;i<=5;i++){
	vi.push_back(i);// vi       i,     1,2,3,4,5
}


#include
#include
using namespace std;
int main(){
	vector<int> vi;
	for(int i=1;i<=5;i++){
		vi.push_back(i);
	}
	//vi.begin()  vi      , it      
	vector<int>::iterator it=begin();
	for(int i=0;i<5;i++){
		printf("%d",*(it+i));//  v[i]
	}
	return 0;
}

출력 결과: 1, 2, 3, 4, 5 교체 기 는 두 가지 자체 조작 도 실현 했다. it +, + it
#include
#include
using namespace std;
int main(){
	vector<int> vi;
	for(int i=1;i<=5;i++){
		vi.push_back(i);
	}
	//vector       it
	for(vector<int>::iterator it=begin();it!=vi.end();it++){
		printf("&d",*it);
	}
	return 0;
}1 2 3 4 5

마지막 으로 자주 사용 하 는 STL 용기 에 서 는 vector 와 string 에서 만 ci. begin () + 3 이라는 교체 기 에 정수 로 쓰 는 방법 을 사용 할 수 있다 고 지적 했다.
vector 상용 함수 인 스 턴 스 vi. pushback() push_back (x) 은 vector 뒤에 요소 x 를 추가 하 는 것 입 니 다.vi.pop_back () vector 의 꼬리 요 소 를 삭제 하 는 데 사용 합 니 다.vi. size () 는 vector 의 요소 개 수 를 가 져 오 는 데 사 용 됩 니 다.vi. clear () 는 vector 의 모든 요 소 를 비 우 는 데 사 용 됩 니 다.insert (it, x) 는 vector 의 임의의 교체 기 it 에 요소 x 를 삽입 하 는 데 사 용 됩 니 다.vi.insert(vi.begin()+2,-1) - 1 을 vi [2] 의 위치 erase () 에 삽입 하 는 두 가지 용법 이 있 습 니 다. 하나의 요 소 를 삭제 하고 한 구간 의 모든 요 소 를 삭제 합 니 다 vi.erase[vi.begin()+3].vi.erase[vi.begin()+1,vi.begin()+4] ;

좋은 웹페이지 즐겨찾기