표준 라이브러리vector 소결

3924 단어
표준 라이브러리 vector
1. 상응하는 헤더 파일과 상응하는 using 성명을 포함한다.
#include <vector>
using std::vector;

주:vector는 데이터 형식이 아니라 클래스 템플릿입니다. 다양한 데이터 형식을 정의할 수 있습니다.그래서vector,vector은 모두 데이터 형식입니다.그래서vector>ivec;바이어스 는 데이터 형식이기 때문에 정확한 정의입니다.
2. vector 대상의 정의와 초기화
vector  v1;
vector 저장 유형이 T인 객체기본 구조 함수 v1이 비어 있습니다.
vector v2(v1);
v2는 v1의 사본이다.
vector v3(n, i);
v3는 n개의 값이 i인 요소를 포함한다.
vector v4(n);
v4는 값이 초기화된 요소의 n개 던전을 포함한다.
3. vector 대상의 조작
v.empty() v가 비어 있으면 true를 반환하고 그렇지 않으면 false를 반환합니다.v . size () 는 v의 요소의 개수를 되돌려줍니다.v . push _ back (t) 은 v의 끝에 값이 t인 요소를 추가합니다.v[n]에서 v의 위치가 n인 요소를 반환합니다.v1 = v2는 v1의 원소를 v2의 원소의 부본으로 바꾼다.v1==v2 v1이 v2와 같으면true로 돌아갑니다.!=,<,<=,>,>=이 조작부호들이 상습적으로 가지고 있는 의미를 유지하다.pop_back(), erase() 요소 삭제: 벡터 컨테이너의 구성원 함수 pop백()은 마지막 요소를 삭제할 수 있고 함수erase()는 하나의iterator가 가리키는 요소를 삭제할 수 있으며 지정된 범위의 요소를 삭제할 수 있습니다.
v.back()이 컨테이너의 마지막 요소를 반환합니다.
4
vector<int> x;
x.erase(x.begin() + i);
유니버설 알고리즘remove()를 사용하여vector용기의 요소를 삭제할 수 있다. 다른것은remove를 사용하면 일반적인 상황에서 용기의 크기를 바꾸지 않고popback ()와erase () 등 구성원 함수는 용기의 크기를 바꿉니다.
참고: 아래 첨자 작업에서는 요소를 추가하지 않습니다.
교체기iterator 소개
1. 컨테이너의iterator 유형
모든 용기는 자신의 교체기 형식을 정의합니다. 예를 들어vector:
vector<int>::iterator iter;

2, begin 및 end 작업
모든 용기는begin과end라는 함수를 정의하여 교체기를 되돌려줍니다.
Begin에서 되돌아오는 교체기는 첫 번째 요소를 가리킨다.
end 작업에서 되돌아오는 교체기는 벡터의 '끝 요소의 다음' 을 가리킨다.
3. vector의 자증 화해 인용 연산
++iter는 교체기가 앞으로 이동합니다.
반복자가 가리키는 요소에 액세스하려면 연산자(* 연산자)를 참조합니다.
*iter = 0;

예:
for(vector<int>::iterator iter = vect.begin(); iter != vect.end(); iter++)
{
    *iter = 0;// 0
}

4、const_iterator
// 
vector<int>::const_iterator 
// ( )
const vector<int>::iterator

5. 교체기의 산술 조작
4
iter + n
iter - n
iter가 가리키는 원소 앞(가) 또는 뒤(감) n개의 원소의 위치에 새로운 교체기를 생성한다.
4
iter1 - iter2
두 교체기 대상의 거리를 계산한다.이 거리는 differencetype의signed 형식의 값입니다.
참고: 두 개의 교체기 추가 작업이 없으므로 다음 작업을 수행할 때 오류가 발생했습니다.
// mid
vector<int>::iterator mid=(vi.begin()+vi.end())/2
// , mid  

올바른 방법:
4
// , mid, vi 
vector<int>::iterator mid=vi.begin()+vi.size()/2;
vi.begin ()과vi.end () 는 교체기를 되돌려줍니다.vi.size () 는 원소의 개수를 되돌려줍니다.
《C++ Primer 중국어판(제4판)》 연습문제 3.13 첨부
/************************************************************************/
/*  vector , , 
 , , 。                      */
/************************************************************************/
#include <iostream>
#include <vector>
#include<string>

using namespace std;
using std::vector;
using std::string;

int main()
{
	vector<int> vI;
	int nInput;
	/* */
	char c;
	cout<<" , :"<<endl;
	while ((c=cin.get())!= '
') { cin.unget(); cin>>nInput; vI.push_back(nInput); } /* */ for (vector<int>::size_type ix = 0;ix < vI.size()-1;ix += 2) { cout<<vI[ix]+vI[ix+1]<<" "; } cout<<"
"; if (0 != vI.size()%2) { cout<<" "<<endl; } return 0; }

연습 문제 3.17에서 교체기 접근으로 변경:
다음 코드를
	for (vector<int>::size_type ix = 0;ix < vI.size()-1;ix += 2)
	{		
		
		cout<<vI[ix]+vI[ix+1]<<" ";
	}
변경:
	for (vector<int>::iterator iter1=vI.begin();iter1 < vI.end()-1; iter1+=2)
	{
		cout<<*iter1+*(iter1+1)<<" ";
	}

좋은 웹페이지 즐겨찾기