본문 바로가기

C++

STL 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
51
52
53
54
55
56
57
58
59
60
61
// STL: vector
 
#include <iostream>
#include <vector>
#include <fstream>
#include <iterator>
using namespace std;
 
int main()
{
    vector <int> v(100);
 
    for (int i = 0; i < 100; i++)
        v[i] = i;
 
    for (vector<int>::iterator p = v.begin(); p != v.end(); p++)
        cout << *<< "\t";
    cout << endl;
 
    // C++ 11 : auto
    for(auto p=v.begin(); p!=v.end(); p++)
        cout << *<< "\t";
    cout << endl;
 
    // vector methods
    // size, resize
    // vector<T> v;
    // vector<T> v(n);
    // vector<T>v(n, value);
 
    int how_many;
    cout << "How many ints in data? ";
    cin >> how_many;
    cout << "The contents of data : ";
 
    vector<int> data(how_many);
    for (vector<int>::iterator p = data.begin(); p != data.end(); p++)
        cin >> *p;
    for (auto p = data.begin(); p != data.end(); p++)
        cout << *<< "\t";
    cout << endl;
 
    // use with a file
    ifstream data_file("data.txt");
    istream_iterator<int> start(data_file), end;
    vector<int> fdata(start, end);    
        
    int sum = 0;
    for (vector<int>::iterator p = fdata.begin(); p != fdata.end(); p++) {
        cout << *<< "\t";
        sum += *p;
    }
 
    // 이 코드는 동작 안함
    //for (auto p = start; p != end; p++) {
    //    cout << *p << "\t";
    //    sum += *p;
    
    cout << "\nsum = " << sum << endl;
    cout << "average = " << 1.0*sum / fdata.size() << endl;
}
cs

vector는 동적으로 할당하는 배열과 같이 사용되며, begin(), end(), size() 등 여러가지 method 들을 이용할 수 있다. 위의 예제에서 맨 아래 auto p는 동작하지 않는다. 왜 그런지 공부해야 함.

beeeye dmu

 

'C++' 카테고리의 다른 글

C++ 입출력시스템 정리  (0) 2016.07.05
STL vector와 sort  (0) 2016.07.05
enum 과 연산자 중복의 예  (0) 2016.07.04
Template를 사용한 swap 함수  (0) 2016.07.04
C++ 출력 포맷  (0) 2016.07.02