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
import sys

inputName = sys.argv[1] # input 1: SHVC 결과 txt 파일명
outputName = sys.argv[2] # input 2: 결과 출력으로 사용할 txt 파일명

txtFile = open(inputName, mode='r') # input 파일의 이름, mode='r'을 통해 파일을 읽음
txtFileWrite = open(outputName,mode='a') # output 파일의 이름, mode='a'를 통해 결과를 누적함

txtFileWrite.write('\n')

t = 0 # line 인덱스 정보 저장
p = -100
while True:
    line = txtFile.readline() # line에는 while문을 통해 input 파일의 1줄 부터 차례로 읽음
   
    if not line: # line이 없으면 while문 탈출
        break

    if line.find('SUMMARY') != -1 : # txt 파일 마지막에 있는 SUMMARY 위치 읽음
        p = t

    if t == p+2 or t == p+3 : # SUMMARY 다음줄과 그 다음줄을 읽고 출력함
        txtFileWrite.write(line.split()[3]+'\t'+line.split()[4] +'\t'+line.split()[5]+'\t'+line.split()[6]+'\t')
       
    t=t+1 # 현재의 line 인덱스


txtFileWrite.close()

+ Recent posts