C++ 표준 템플릿 라이브러리 STL 순서 컨테이너 상세 정보
8637 단어 C++표준 템플릿 라이브러리STL순서 용기
C++ 표준 템플릿 라이브러리 STL 순서 컨테이너
용기
데이터 구조
순서성
반복성
지원 교체기
vector
동적 배열
무질서하다
반복 가능
랜덤 액세스 교체기
deque
양방향 대기열
무질서하다
반복 가능
랜덤 액세스 교체기
list
양방향 체인 테이블
무질서하다
반복 가능
양방향 교체기
동적 배열vector
ctor
#include <vector>
동적 수조: 그 원소는 메모리에 연속적으로 저장되어 있으며, 임의로 어떤 원소를 저장해도 상수 시간 내에 완성할 수 있으며, 이 용기의 끝부분에서 원소를 삭제하면 거의 상수 시간 내에 완성할 수 있어 비교적 좋은 성능을 가진다.vector 공통 함수 사용 인스턴스는 다음과 같습니다.
#include <iostream>
#include <vector>
using namespace std;
template<class T>
void printVector(T s, T e){
for(;s != e; ++s){
cout << *s << ' ';
}
cout << endl;
}
int main(){
int a[5] = {1,2,3,4,5};
vector<int> v(a,a+5);
cout << "1)" << v.end() - v.begin() << endl;
cout << "2)";
printVector(v.begin(), v.end());
v.insert(v.begin()+3, 100); // insert()
cout << "3)";
printVector(v.begin(), v.end());
vector<int> v2(5,0);
v2.insert(v2.begin()+2,v.begin(),v.end()); // insert()
cout << "4)";
printVector(v2.begin(), v2.end());
v.erase(v.begin()+3); // erase()
cout << "5)";
printVector(v.begin(), v.end());
v.erase(v.begin()+2,v.begin()+4); // erase()
cout << "6)";
printVector(v.begin(), v.end());
return 0;
}
구조 함수함수
함수 설명
vector
구조 함수 크기를 설정할 수 있는vector 만들기
vector(const vector&)
복사 구조 함수, 구간 내 다른 수조의 요소를 복사할 수 있다
operator=
컨테이너에 새 컨텐트를 할당하여 현재 컨텐트를 교체하고 크기를 변경합니다.
assign
새 내용을vector에 분배하여 현재 내용을 바꾸고 크기를 수정합니다
용량 관리 함수
함수
함수 설명
size
컨테이너의 요소 수 되돌리기
max_size
용기에 수용할 수 있는 최대 원소 수를 되돌려줍니다.
resize
용기의 크기를 조정하여 n(매개 변수)개의 요소를 포함하도록 합니다
capacity
현재 vector에 할당된 저장 공간 (용량) 의 크기를 되돌려줍니다.
empty
vector가 비어 있는지 되돌려줍니다.
reserve
요청vector 용량은 최소한 n (매개 변수) 개의 요소를 포함할 수 있습니다
shrink_to_fit
용기에size(원소 수량)에 적응하기 위해capacity(용량)를 줄여야 합니다
첨삭 함수
함수
함수 설명
push_back
용기의 마지막 요소 다음에 새 요소 추가
pop_back
용기의 마지막 요소를 삭제하여 용기size를 효과적으로 감소합니다
insert
지정된 위치의 요소 앞에 새 요소를 삽입하여 컨테이너를 확장하고 요소 수를 삽입하여 컨테이너 크기를 효과적으로 증가시킵니다.
erase
vector에서 단일 원소(
position
나 일련의 원소([first,last)
를 삭제하면 제거된 원소의 수를 효과적으로 줄이고 용기의 크기를 파괴합니다clear
vector에서 모든 요소를 삭제하고 크기가 0인 용기를 남깁니다
emplace
position (파라미터) 위치에 새 요소args (파라미터) 를 삽입하여 용기를 확장합니다
emplace_back
vector의 끝에 새로운 요소를 삽입합니다. 현재 마지막 요소의 뒤를 따릅니다.
색인 함수
함수
함수 설명
operator[]
용기의 n (매개 변수) 개 위치의 요소에 대한 인용을 되돌려줍니다.
at
용기의 n (매개 변수) 개 위치의 요소에 대한 인용을 되돌려줍니다.
front
용기의 첫 번째 요소에 대한 인용을 되돌려줍니다.
back
용기의 마지막 요소에 대한 인용을 되돌려줍니다.
data
용기의 첫 번째 요소를 가리키는 바늘을 되돌려줍니다.
반복기 함수
함수
함수 설명
begin
용기의 첫 번째 원소를 가리키는 교체기를 되돌려줍니다.
end
용기의 마지막 원소를 가리키는 이론적 원소의 교체기
rbegin
용기의 마지막 원소를 가리키는 역방향 교체기를 되돌려줍니다.
rend
역방향 교체기를 되돌려주고 중의 첫 번째 원소를 가리키기 전의 이론 원소를 가리킨다
cbegin
용기의 첫 번째 요소를 가리키는 상수 교체기 (const_iterator) 를 되돌려줍니다.
cend
용기의 마지막 원소를 가리키는 이론적 원소의 상수 교체기를 되돌려줍니다(const_iterator)
crbegin
컨테이너의 마지막 요소를 가리키는 상수 역변환기(const_reverse_iterator) 반환
crend
용기의 첫 번째 요소를 가리키기 전의 이론적 요소를 되돌려주는 상수 역변환기(const_reverse_iterator)
vector로 2차원 그룹을 실현하다
#include <iostream>
#include <vector>
using namespace std;
int main(){
vector<vector<int>> arr(3); // arr 3 , vector<int>
for(int i=0; i<arr.size(); ++i){
for(int j=0; j<3; ++j){
arr[i].push_back(j);
}
}
for(int i=0; i<arr.size(); ++i){
for(int j=0; j<3; ++j){
cout << arr[i][j] << ' ';
}
cout << endl;
}
return 0;
}
양방향 대기열 deque
que
#include <deque>
양방향 대기열: 그 요소는 메모리에 연속적으로 저장되어 있으며, 임의로 모든 요소를 저장하면 상수 시간 내에 완성할 수 있으며, 이 용기의 양쪽 첨삭 요소도 거의 상수 시간 내에 완성할 수 있어 비교적 좋은 성능을 가진다.vector에 적용되는 모든 작업은 deque에 적용됩니다. 이외에 deque는
push_front / pop_front
맨 앞에 요소를 삽입하거나 삭제하는 작업도 있습니다. 복잡한 것은 O(1) O(1) O(1)입니다.함수
함수 설명
deque
구조 함수
push_back
용기의 끝에 새로운 요소를 추가하다
push_front
컨테이너 시작 부분에 새 요소 삽입
pop_back
용기의 마지막 요소를 삭제하고 용기 크기를 하나 줄인다
pop_front
용기의 첫 번째 요소를 삭제하고 용기 크기를 하나 줄인다
emplace_front
용기의 시작 부분에 새로운 요소를 삽입합니다
emplace_back
용기의 끝에 새로운 요소를 삽입하다
양방향 체인 시계list
list
#include <list>
쌍방향 체인표: 그 요소는 메모리에 연속적으로 저장되지 않고 무작위 접근을 지원하지 않으며 이 용기의 어느 위치에서든 요소를 삭제하면 상수 시간 내에 비교적 좋은 성능을 완성할 수 있다.list는 모든 순서 용기에 있는 구성원 함수를 제외하고 다음 8개의 구성원 함수를 지원합니다.
함수
함수 설명
push_front
컨테이너 시작 부분에 새 요소 삽입
pop_front
컨테이너에서 첫 번째 요소 삭제
sort
요소 정렬, 주의해야 할 것은list가 STL 알고리즘의sort를 지원하지 않는다는 것이다
remove
값이 같은 모든 요소 삭제
unique
이전 원소와 같은 원소를 모두 삭제하여 원소가 중복되지 않도록 합니다. 사용하기 전에sort가 필요합니다.
merge
두 개의 체인 시계를 합쳐서 합쳐진 체인 시계를 비우다
reverse
체인 테이블 컨텐트 뒤집기
splice
지정한 위치 앞에 다른 체인 테이블에 하나 이상의 요소를 삽입하고 이 체인 테이블에서 삭제합니다.
list의 구성원 함수 사용 사례는 다음과 같습니다.
#include <iostream>
#include <list>
#include <algorithm>
using namespace std;
class A{
private:
int n;
public:
A(int n_){n = n_;}
friend bool operator<(const A & a1, const A & a2);
friend bool operator==(const A & a1, const A & a2);
friend ostream& operator<<(ostream & o, const A & a2);
};
bool operator<(const A & a1, const A & a2){
return a1.n < a2.n;
}
bool operator==(const A & a1, const A & a2){
return a1.n == a2.n;
}
ostream& operator<<(ostream & o, const A & a2){
o << a2.n;
return o;
}
template <class T>
void printList(T start, T end){
for(;start != end; ++start){
cout << *start << ',';
}
cout << endl;
}
int main(){
list<A> lst1, lst2;
lst1.push_back(1); lst1.push_back(3);
lst1.push_back(2); lst1.push_back(4);
lst1.push_back(2);
lst2.push_back(10); lst2.push_back(50);
lst2.push_back(30); lst2.push_back(30);
lst2.push_back(40); lst2.push_back(40);
lst2.push_back(30); lst2.push_back(20);
cout << "1) ";
printList(lst1.begin(),lst1.end());
cout << "2) ";
printList(lst2.begin(),lst2.end());
lst2.sort(); // sort lst2
cout << "3) ";
printList(lst2.begin(),lst2.end());
lst2.unique(); // lst2
cout << "4) ";
printList(lst2.begin(),lst2.end());
lst2.pop_front(); // lst2
cout << "5) ";
printList(lst2.begin(),lst2.end());
lst1.remove(2); // lst1 2
cout << "6) ";
printList(lst1.begin(),lst1.end());
lst2.merge(lst1); // lst1 lst2 lst1
cout << "7) ";
printList(lst2.begin(),lst2.end());
lst2.reverse(); // lst2
cout << "8) ";
printList(lst2.begin(),lst2.end());
lst1.push_back(100); lst1.push_back(200);
lst1.push_back(300); lst1.push_back(400);
cout<<"9) ";
printList(lst1.begin(),lst1.end());
//
list<A>::iterator p1,p2,p3;
p1 = find(lst2.begin(),lst2.end(),4);
p2 = find(lst1.begin(),lst1.end(),200);
p3 = find(lst1.begin(),lst1.end(),400);
lst2.splice(p1,lst1,p2,p3); // lst1 [p2,p3) lst2 p1 , lst1
cout<<"10) ";
printList(lst1.begin(),lst1.end());
cout<<"11) ";
printList(lst2.begin(),lst2.end());
return 0;
}
이 글은 C++ 표준 템플릿 라이브러리 STL 순서 용기에 대한 자세한 내용을 소개합니다. 더 많은 C++ 표준 템플릿 라이브러리 STL 내용은 이전의 글을 검색하거나 아래의 관련 글을 계속 훑어보십시오. 앞으로 많은 응원 부탁드립니다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Visual Studio에서 파일 폴더 구분 (포함 경로 설정)Visual Studio에서 c, cpp, h, hpp 파일을 폴더로 나누고 싶었습니까? 어쩌면 대부분의 사람들이 있다고 생각합니다. 처음에 파일이 만들어지는 장소는 프로젝트 파일 등과 같은 장소에 있기 때문에 파일...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.