1. either A or B

-> A 또는 B 둘 중 하나

2. neither A nor B

-> A와 B 어느 쪽도 아닌

3. not A but B

-> A가 아니라 B인

4. not only A but also B

-> A뿐만 아니라 B도

5. B as well as A

-> A뿐만 아니라 B 도

I'm gonna tell you an incredible story.

- 내가 멋진 이야기를 너에게 들려줄께.

Are we being punished for something?

- 우리가 벌 받을 짓을 했나요?

Is this gonna taking a while?

- 오래 걸리나요?

I had this whole other life.

- 지금과는 아주 다른 인생을 살았지

We thought you were asleep.

- 우리는 니가 자는 줄 알았어

You're getting engaged tonight.

- 너는 오늘 약혼을 하는거야

I'm going to teach you how to live.

- 나는 너가 살아가는 방법에 대해 가르쳐줄께

I thought I was your best friend.

- 나는 내가 너의 최고의 친구인줄 알았어

  1. This is the one of the songs I've heard.
  2. I have seen this movie.
  3. I haven't seen the movie yet.
  4. I've decided to change.
  5. I had no idea what I was doing.
  6. I want to ask you something

내가 초창기 VTM 소스코드를 분석할 때, c++에서 주로 사용하는 vector에 대한 개념이 없어서 고생했던 기억이 있다.

정말 별거 없는 내용이지만, 추후 다시 remind도 할 겸 vector와 관련된 내용을 정리해본다.

 

c++에서 vector란 배열과 비슷한 역할을 하고 있다.

하지만 vector는 배열의 맨 앞과 뒷부분을 제거하는데에 효율적이며, 배열보다 계산속도가 빠르다는 장점이 있어서 Video codec에서 매우 애용하는 문법이다.

다만, index 기반 접근도 가능하지만 비효율적이므로 이 경우에는 vector를 사용하지 않는다.

 

vector를 선언하는 방법
  • vector<int> name;
    - 비어있는 vector를 생성한다.
  • vector<int> name(3);
    - 0으로 초기화 된 3개의 원소를 갖는 vector를 생성한다.
  • vector<int> name(3,5);
    - 5로 초기화 된 3개의 원소를 갖는 vector를 생성한다.
  • vector<int> name1(name2);
    - name1에 name2를 복사하여 생성한다.
vector의 맴버 함수들
  • name.at(idx);
    - idx번째 원소를 참조
  • name[idx];
    - idx번째 원소를 참조
  • name.front();
    - 첫번째 원소를 참조
  • name.back();
    - 마지막 원소를 참조
  • name.clear();
    - 모든 원소를 제거함
    - size만 제거되고 capacity는 변경사항 없음
  • name.push_back(3);
    - 마지막 원소 뒤에 원소 3을 삽입함
  • name.pop_back();
    - 마지막 원소를 제거함
  • name.begin();
    - 첫번째 원소를 가리킴
  • name.end();
    - 마지막의 다음번째를 가리킴
  • name.size();
    - 원소의 개수를 리턴함
  • name.capacity()
    - 할당된 공간의 크기를 리턴함
  • name1.swap(name2);
    - name2와 name1의 원소의 capacity를 바꿔줌. (모든 값을 바꿔줌)
  • name.insert(2,3,4);
    - 2번째 위치에 3개의 공간을 추가하여 4를 삽입함. (뒤에값들은 뒤로 밀림)
  • name.insert(2,3);
    - 2번재 위치에 3의 값을 삽입함
  • name.erase(x);
    - x가 가리키는 원소를 제거함
    - size만 줄고, capacity(할당된 메모리)는 그대로 남게됨
  • name.empty();
    - vector가 비어있다면 true 값을 리턴함
    - 비어있다는 기준은 size가 0이라는 의미이며, capacity와는 상관이 없음
vector의 특징: size와 capacity와의 관계

vector는 capacity로 메모리가 할당되어 있으며, 그 안에 초기화된 값들의 개수인 size로 구성되어 있다.

 

 

'개인공부 > C언어' 카테고리의 다른 글

클래스 객체 인스턴스  (0) 2022.02.03

+ Recent posts