C++STL 입문 강좌(1)vector 벡터 용기 사용 방법

4083 단어 C++STLvector
프로필
Vectors 는 일련의 연속 저장 요 소 를 포함 하고 있 으 며,행동 은 배열 과 유사 합 니 다.
Vector 에 있 는 임의의 요 소 를 방문 하거나 끝 에 요 소 를 추가 하면 O(1)에서 완성 할 수 있 으 며,특정 값 의 요소 가 있 는 위 치 를 찾 거나 Vector 에 요 소 를 삽입 하면 O(N)입 니 다.

2.전체 프로그램 코드

/*              */ 
 
#include <vector> 
#include <iostream> 
#include <algorithm> 
#include <stdexcept> 
using namespace std; 
 
void print(int num) 
{ 
 cout << num << " "; 
} 
 
int main() 
{ 
 //1.     
 vector<int> v; 
 vector<int>::iterator iv; 
 
 v.reserve(100);//  vector          
 v.assign(10, 2);// 10   2     vector  
 cout << v.capacity() << endl; //  vector         (            ) 
 cout << v.size() << endl; //  Vector          
 cout << endl; 
 
 //2.    
 //  :push_front()    list deque     
 for (int i = 0; i < 10; i++) 
 v.push_back(i); 
 for_each(v.begin(), v.end(), print);//  #include <algorithm> 
 cout << endl; 
 cout << v.size() << endl; 
 cout << endl; 
 
 //3.      、    
 v.insert(v.begin() + 3, 99); 
 v.insert(v.end() - 3, 99); 
 for_each(v.begin(), v.end(), print); 
 cout << endl; 
 for_each(v.rbegin(), v.rend(), print);//        ++               
 cout << endl; 
 
 //       
 for(iv = v.begin(); iv != v.end(); ++iv) 
 cout << *iv << " "; 
 cout << endl; 
 cout << endl; 
 
 //4.    
 v.erase(v.begin() + 3); 
 for_each(v.begin(), v.end(), print); 
 cout << endl; 
 v.insert(v.begin() + 3, 99);//   
 
 v.erase(v.begin(), v.begin() + 3); //     3      4  
 for_each(v.begin(), v.end(), print); 
 cout << endl; 
 
 //  :pop_front()    list deque     
 v.pop_back(); 
 for_each(v.begin(), v.end(), print); 
 cout << endl; 
 cout << endl; 
 
 //5.    
 cout << v.front() << endl; 
 cout << v.back() << endl; 
 
 //     ,                  
 for (int i = 15; i < 25; i++) 
 cout << "Element " << i << " is " << v[i] << endl; 
 //      
 int i; 
 try 
 { 
 for (i = 15; i < 25; i++) 
  cout << "Element " << i << " is " << v.at(i) << endl; 
 } 
 catch (out_of_range err)//#include <stdexcept> 
 { 
 cout << "out_of_range at " << i << endl; 
 } 
 cout << endl; 
 
 //6.    
 v.clear(); 
 cout << v.size() << endl;//0 
 for_each(v.begin(), v.end(), print); //  clear,v.begin()==v.end(),       。 
 
 return 0; 
} 
보충
vector 는 STL 에서 가장 광범 위 하 게 사용 되 는 용기 라 고 해 야 한다.배열 은 거의 모든 언어 가 가지 고 있 는 바 텀 데이터 구조 라 는 것 을 잘 알 고 있 지만 우리 의 업무 에서 우 리 는 배열 을 대량으로 사용 하여 같은 사물 의 집합 을 표시 할 것 이다.vector 는 실질 적 으로 모든 요 소 를 저장 할 수 있 는 동적 배열 이다.
vector 는 저급한 데이터 구 조 는 아니 지만 각 작업 의 효율 은 거의 배열 과 같다.다만 일반 배열 보다 더 많은 공간 을 사용 할 것 이다.vector 가 공간 이 부족 해서 공간 을 재배 치 해 야 할 때 보통 더 많은 공간 을 분배 합 니 다(현재 size 의 1.5 배 일 수 있 습 니 다.이것 은 구체 적 으로 정 의 된 것 입 니 다).새로운 요 소 를 삽입 할 때마다 공간 을 재배 치 하지 않도록 합 니 다.
재 할당 공간 은 vector 에서 가장 비효 율 적 인 작업 이 므 로 vector 를 사용 할 때 공간 재 할당 을 피해 야 합 니 다.구체 적 인 방법 은 자신의 실제 수요 에 따라 vector 의 capacity 크기 를 설정 하 는 것 이다.
vector 와 list 에 대한 상세 한 비 교 는 참고 하 시기 바 랍 니 다이 문장.
참고 사이트:http://www.cplusplus.com/reference/vector/vector/
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기