C++

Vector, Deque

King94 2019. 10. 31. 10:03

#include <vector>                                                                                

@ vector <int> v 비어있는 vector v를 생성                                                 

@ vector <int> v(5) 기본값이 05개의 원소 생성

@ vector <int> v(5 , 2) 기본값이 25개의 원소 생성                                      

@ vector <int> v2(v1)  v1과 똑같이 복사 생성

@ v.assign (5,2) 2의 값으로 5개의 원소 할당

 

@ v [index] index번째 원소를 반환                                               

@ v.at(index) index번째 원소를 반환                                            

@ v.front() 첫 번째 원소를 반환                                                   

@ v.back() 마지막 원소를 반환                                                       

@ v.push_back(7) 마지막 원소 뒤에 7을 삽입

@ v.pop_back() 막지막 원소 제거;

@ v.size() 원소의 개수를 리턴

@ v.capacity() 할당된 공간의 크기를 리턴

@ v.clear() 모든 원소를 제거, size는 줄고 capacity는 그대로

@ v.empty() vector가 비었으면 true 리턴, 아니면 false 리턴

 

반복자와 함께 사용

@ vector <int> :: iterator iter= v.begin()  반복자로써 포인터와 비슷한 역할 수행

  ex) *iter -->> 첫 번째 원소 값 반환 

  ex)  iter++ or  iter+1 -->> *iter  두 번째 원소 값을 반환한다

@ v.begin() 첫 번째 원소를 가리킴

@ v.end() 마지막 원소의 다음 원소를 가리킴

 

vector<int> :: reverse_iterator iter

@ v.rbeing() reverse being을 가리킨다(거꾸로 해서 첫 번째 원소)

@ v.rend() reverse end을 가치 킨다(거꾸로 해서 마지막의 다음을 가리킴)

 

@ v.erase(iter) iter이 가리키는 원소 제거

@ v.insert(iter,3) iter 위치에 3의 값을 삽입

@ v.insert(iter,2,3) iter 위치에서 3의 값을 2개 삽입

@ v.resize(n) 크기를 n으로 변경, 더 커지는 경우 default 값은 0으로 초기화

@ v.resize(n,3) 크기를 n으로 변경, 더 커지는 경우 default값은 3으로 초기화 

 

 #include <deque>

@ deque <int> dq

<vector와의 차이점>

@ dq.push_back(3) 마지막 원소 뒤 3 삽입

@ dq.push_front(3) 첫 원소 앞에 3 삽입

@ dq.pop_back() 마지막 원소 삭제

@ dq.pop_front() 첫 원소 삭제

그 외는 vector와 같음

<c++코드 Vector>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#include<iostream>
#include<vector>
using namespace std;
int main(void)
{
    vector<int> v;
    v.push_back(1);         //  vector v에 계속해서 원소 삽입 
    v.push_back(2);
    v.push_back(3);
    v.push_back(4);
    v.push_back(5);
    v.push_back(6);
    v.pop_back();            // 맨 마지막 원소 제거    
    cout<<v[0]<<endl;         // 첫번째 원소값 반환 
    cout<<v.at(0)<<endl;    
    cout<<v.front()<<endl;    //맨 앞에 값 반환 
    cout<<v.back()<<endl;     //맨 마지막 값 반환 
    cout<<v.size()<<endl;     //크기 반환 
    cout<<v.capacity()<<endl;    //용량 반환 
    if(v.empty())            //    비었있지는 여부 확인 
    {
        cout<<"비어 있음 "<<endl
    }
    else    {
        cout<<"채워져 있음"<<endl
    }
    vector<int> :: iterator iter=v.begin();    // 반복자 생성 
    for(iter=v.begin();iter!=v.end();iter++)
    {
        cout<<*iter<<' ';
    }
    cout<<endl;
    iter=v.begin();
    iter++;
    v.insert(iter,4,123);    //iter가 가르치는 곳에 123원소를 4개 삽입 
    for(iter=v.begin();iter!=v.end();iter++)
    {
        cout<<*iter<<' ';
    }
    iter=v.begin();
    v.erase(iter); //iter가 가르치는 원소 삭제
    cout<<endl
    for(iter=v.begin();iter!=v.end();iter++)
    {
        cout<<*iter<<' ';
    }    
        return 0;
 
}
cs

 

<c++코드 deque>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include<iostream>
#include<deque>
#include<vector>
using namespace std;
int main(void)
{
    deque<int> dq(10,2);
    deque<int> ::iterator iter;
    for(iter=dq.begin();iter!=dq.end();iter++)
    {
        cout<<*iter<<' ';
        
    }
    cout<<endl;
    dq.push_back(123);
    dq.push_front(1);
    for(iter=dq.begin();iter!=dq.end();iter++)
    {
        cout<<*iter<<' ';
        
    }
        return 0;
    
}
cs

 

<결과 화면>