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]
;
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.