표준 라이브러리vector 소결
1. 상응하는 헤더 파일과 상응하는 using 성명을 포함한다.
#include <vector>
using std::vector;
주:vector는 데이터 형식이 아니라 클래스 템플릿입니다. 다양한 데이터 형식을 정의할 수 있습니다.그래서vector
2. vector 대상의 정의와 초기화
vector
vector 저장 유형이 T인 객체기본 구조 함수 v1이 비어 있습니다.
vector
v2는 v1의 사본이다.
vector
v3는 n개의 값이 i인 요소를 포함한다.
vector
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)<<" ";
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.