본문 바로가기

Code/C++

[C++] Vector /

A vector in C++ is an object that manages a block of memory

 

 a collection of values

 

A vector has a name, and we may access the values it contains via their position within the block of memory managed by the vector A vector stores a sequence of values, and the values must all be of the same type A collection of values all of the same type is said to be homogeneous.

 

 

Step.1: Header including #include 

Step.2: Namespace definition using namespace std; // or using std::vector statement 

Step.3: Make your own vector variable vector 

 

vec_a; // vector with name only vector 

vec_b(10); // vector with initial size vector 

vec_c(10, 8); // vector with initial size and initial value vector 

vec_d{ 10, 20, 30, 40 }; // vector with specific values

 

 

#include <iostream>

#include <vector>

using namespace std;

 

// 반드시 call by reference로 주소값으로 보내어야한다

// vector 전체를 복사하지 않으므로 메모리 오버를 방지한다.

// 그대신 값이 안바뀌도록 const걸어둘것

void print(const vector<int>& v) { 

        for (unsigned i = 0; i < v.size(); i++)  //데이터타입unsigned,

               cout << v[i] << '\t';        // 벡터안에 element의 크기를 모르더라도 사용가능하다

        cout << endl;

}

int main() {

        vector<int> vec_a(5); //{0,0,0,0,0}

        vector<int> vec_b(5, 8); //{8,8,8,8,8}

        vector<int> vec{ 10,20,30,40 }; //{10,20,30,40}

        //                             0  1  2  3

        //for (int i = 0; i <= 3; i++)

        vec.at(0) = 1000;

        vec[1] = 2000;

        

        print(vec);

        

  

        return 0;

}

 

 

1000    2000    30      40

 

 


 

 

        vec.push_back(50); // 맨 뒤에 element를 추가

       

        vec.pop_back(); // 맨 뒤에 element를 제거할 때

      

 

Simplified For grammar

for(변수 : 배열) 

vec 값들을 하나씩 'elem' 변수에 대입

반복문이 돌 때마다 'elem' 에 들어 있는 값이 변하게 된다.

처음에는 1, 2, 3 순서대로부터 vec 끝까지 하나씩 'elem' 에 대입된다.

 

        // int& elem=vec[0] -> body ->

        // int& elem=vec[1]    

        for (int& elem : vec)

               cin >> elem;

 

 

        // int elem = vec[0] -> body

        // int elem = vec[1] -> body

        for (int elem : vec)

               cout << elem << '\t';

        cout << endl;

        return 0;

      

}

 


void get_data(int& low, int& high) {

        cout << "Enter low and high number: ";

        cin >> low >> high;

}

bool is_prime(int n) {

        if (n < 2)

               return false;

        for (int i = 2; i < n; i++)

               if (n % 1 == 0)

                       return false;

        return true;

}

vector <int> primes(int low, int high) {

        vector<int> vec;

        for (int i = low; i <= high; i++)

               if (is_prime(i))

                       vec.push_back(i);

        return vec;

}

void print(const vector<int>& vec) { // 객체를 함수인자로 보낼때, const는 왠만하면써줘라

        for (int elem : vec)

               cout << elem << '\t';

        cout << endl;

}

int main() {

        int low, high;

        get_data(low, high);

        vector<int> vec = primes(low, high);

        print(vec);

        

        return 0;

}

 

 

 


 

해당 자료는 경희대학교 소프트웨어융합학과 배성호교수님 수업내용을 참조하였습니다.