용기 (1): 대기 열 용기 목록
다른 대기 열 용기 와 구별 (Vector, List, Deque):
list 는 데이터 구조의 양 방향 링크 입 니 다. stl 소스 코드), 따라서 메모리 공간 이 연속 되 지 않 을 수 있 습 니 다. 의, 포인터 로 데이터 에 접근 하 는 것 이 특징 입 니 다. 이 특징 은 무 작위 액세스 가 매우 비효 율 적 이기 때문에 [] 연산 자 를 다시 불 러 오지 않 았 습 니 다. 하지만 링크 의 특성 상 임의의 삭 제 를 효율 적 으로 지원 할 수 있 습 니 다. 삽입
어떤 상황 에서 리스트 를 선택 합 니까?
만약 대량의 삽입 과 삭제 가 필요 하 다 면, 즉시 액세스 하 는 것 에 관심 이 없다 면, list 를 사용 해 야 한다.
상용 함수 (1) 구조 함수
list c: 빈 listlist c1 (c2) 만 들 기: 같은 유형의 요 소 를 복사 하 는 listlistc (n): n 개의 요 소 를 만 드 는 list, 모든 요소 값 은 기본 구조 함수 에서 listc (n, elem) 를 확인 합 니 다. n 개의 요 소 를 만 드 는 list, 각 요소 의 값 은 elemlistc (begin, end) 입 니 다. 교체 기 에서 list 를 만 들 고 교체 구간 은 [begin, end) 입 니 다.
(2) 크기, 판단 함수 Int size () const: 용기 요소 개수 bool empty () const 를 되 돌려 줍 니 다. 용기 가 비어 있 는 지 판단 하고 비어 있 으 면 true (3) 를 되 돌려 줍 니 다. 함수 void push back (const T & x) 추가, 삭제: list 요소 끝부분 에 요소 xvoid push front (const T & x) 를 추가 합 니 다. list 요소 의 첫 번 째 요소 돈 에 요 소 를 추가 합 니 다 Xvoid pop back (): 용기 끝 요 소 를 삭제 하고 용기 가 빈 void pop front () 가 아 닐 때 만 용기 의 첫 번 째 요 소 를 삭제 합 니 다. 용기 가 빈 void remove (const T & x) 가 아 닐 때 만 삭제 합 니 다.: 용기 에 있 는 모든 요소 값 이 x 와 같은 요소 void clear () 를 삭제 합 니 다. 용기 에 있 는 모든 요소 iterator insert (iterator it, const T & x) 를 삭제 합 니 다. 교체 기 포인터 it 전에 요소 x 를 삽입 하고 x 교체 기 포인터 void insert (iterator it, size type n, const T & x) 를 되 돌려 줍 니 다. 교체 기 포인터 it 전에 같은 요소 xvoid insert (iterator it, const iterator first, const iterator last) 를 삽입 합 니 다.: [first, last) 간 요 소 를 교체 기 포인터 it 앞 iterator erase (iterator it) 에 삽입 합 니 다. 교체 기 포인터 it 에 대응 하 는 요소 iterator erase (iterator first, iterator last) 를 삭제 합 니 다. 교체 기 포인터 [first, last) 간 요소 삭제 (4) 함수 iterator begin (): 첫 번 째 요 소 를 되 돌려 주 는 교체 기 포인터 iterator end (): 마지막 요 소 를 되 돌려 주 는 교체 기 포인터 reverse iterator rbegin (): 마지막 요 소 를 되 돌려 주 는 역방향 교체 기 지침, 용기 reverse iterator rend (): 첫 번 째 요소 의 이전 위 치 를 되 돌려 주 는 교체 기 지침 reference front (): 첫 번 째 요 소 를 되 돌려 주 는 참조 reference back (): 끝 요소 의 인용 을 되 돌려 줍 니 다. (5) 조작 함수 void sort (): 용기 안의 모든 요 소 를 정렬 합 니 다. 기본 값 은 오름차 template void sort (Pred pr) 입 니 다. 용기 안의 모든 요 소 는 미리 정 해진 함수 pr 에 따라 void swap (list & str) 를 정렬 합 니 다. 두 list 용기 교환 기능 void unique (): 용기 안의 인접 요소 가 중복 되면 하나의 void splice (iterator it, list & li) 만 유지 합 니 다.: 대기 열 통합 함수, 대기 열 li 모든 함수 가 교체 포인터 it 를 삽입 하기 전에 x 는 빈 대기 열 void splice (iterator it, list & li, iterator first) 로 변 합 니 다. 대기 열 li 에서 [first, end) 간 요 소 를 교체 포인터 it 앞 void splice (iterator it, list & li, iterator first, iterator last): x 에서 [first, last) 간 요 소 를 옮 겨 교체 기 포인터 it 앞 void reverse () 를 삽입 합 니 다.: 반전 용기 의 원소 순서
간단 한 예시:
list listInt{ 1, 2, 3, 4, 5, 6, 7 };
int a[5] = { 13, 22, 3, 24, 5 };
list::iterator iterInt;
listInt.insert(listInt.begin(), a,a+5);
for (iterInt = listInt.begin(); iterInt != listInt.end(); iterInt++)
{
cout << *iterInt << endl;
}
앞의 4 가지 함수 가 모두 비교적 간단 합 니 다. 5 가지 조작 함수 의 sort () 함수 에 대해 말씀 드 리 겠 습 니 다.
1. sort () 함수: 기본 오름차 순, less 와 greater 정렬 사용
출력:
#include
#include
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
list listIntTwo{ 131, 21, 341, 451, 571, 6, 1 };
list::iterator iterInt;
listIntTwo.sort();
for (iterInt = listIntTwo.begin(); iterInt != listIntTwo.end(); iterInt++)
{
cout << *iterInt << endl;
}
return 0;
}
Less 와 Greater, 오름차 와 내림차
1
6
21
131
341
451
571
. . .
2. sort () 함수: templatevoid sort (Pred pr): 용기 안의 모든 요 소 는 미리 정 해진 함수 pr 에 따라 정렬 됩 니 다.
내림차 순 정렬 (내림차 순 방법 중 하나) 을 실현 하거나 대상 정렬 을 사용자 정의 하려 면 판정 함 수 를 사용 해 야 합 니 다.
내림차 순:
#include
#include
#include //greater
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
list listIntTwo{ 131, 21, 341, 451, 571, 6, 1 };
list::iterator iterInt;
greater sortFunc;//
//less sortFunc;//
listIntTwo.sort(sortFunc);
for (iterInt = listIntTwo.begin(); iterInt != listIntTwo.end(); iterInt++)
{
cout << *iterInt << endl;
}
return 0;
}
사용자 정의 대상 정렬 (이 예 는 구조 체):
출력:
#include
#include
using namespace std;
bool cmp(int a, int b)// : ( return ab;
}
int _tmain(int argc, _TCHAR* argv[])
{
list listIntTwo{ 131, 21, 341, 451, 571, 6, 1 };
list::iterator iterInt;
listIntTwo.sort(cmp);// cmp
for (iterInt = listIntTwo.begin(); iterInt != listIntTwo.end(); iterInt++)
{
cout << *iterInt << endl;
}
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.