본문 바로가기

C++26

너무 큰 크기의 배열이 선언되면 실행되지 않는다 아래의 문제에서 https://www.acmicpc.net/problem/10816 10816번: 숫자 카드 2 첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10, www.acmicpc.net 카드의 풀을 배열로 선언해서 카운트 하려고 하면, 배열의 크기가 1천만이 된다 1천만의 크기를 가진 배열을 선언해서 실행해보니 예상치 못한 에러로 종료가 되었다 혹시나 해서 배열의 크기를 10만으로 줄이니 이번엔 또 잘 돌아간다 찾아보니 배열의 크기가 너무 크면 컴파일러가 프로그램의 실행을 막는다고 한다 이유는 몇가지가 있지만 결국 성능상 효율 문.. 2022. 8. 5.
벡터에서 음수 인덱스도 접근은 가능하다 기본적으로 음수 인덱스는 벡터 앞의 부분을 가리킨다 인덱스 0으로부터 인덱스 번호*자료형 크기 만큼의 앞의 메모리를 주소값으로 가지고 값으로 쓰레기값을 가지고 있다 쓰레기 값을 가지지만 더하기 빼기 등등 요소의 기본적인 연산은 가능하다 하지만 쓰레기값을 가지고 다루는 것이기에 값은 계산해도 쓸수가 없다 초기 값이 쓰레기 값이므로... 하지만 그 음수 인덱스를 초기화한다면, 그 음수 주소값이 가리키는 값은 우리가 초기화한 값을 가리켜서 실제로 계산이 가능하고 원하는 대로 사용이 가능하다 예를 들어 인덱스 0 -1 에 접근해서 그 값을 ++하는 코드가 있다면, -1인덱스의 값을 따로 a[-1]=4 처럼 초기화했다면 인덱스 -1에도 연산이 적용 될 것이고, 초기화 하지 않았으면 쓰레기값++ 이니 의미없는 값은.. 2022. 6. 22.
벡터도 넣은 요소는 인덱스로 접근이 가능하다 0부터 벡터.size() -1 만큼 인덱스를 읽는것이 가능하다 넣은 만큼은 인덱스를 읽어서 사용 가능하다는 뜻이니 자주 쓰도록 하자 2022. 6. 22.
cin 입력 후 다른 타입의 입력 시 꼭 cin.ignore를 해줘야 한다 정수형 cin을 입력 시, 숫자가 입력 버퍼에 저장되지 않고 바로 변수에 저장이 된다 하지만 문자열을 cin으로 입력 시, 입력 버퍼에 저장한 문자를 읽어서 변수로 저장한다 정수형 변수에 입력중에 문자열 변수가 입력이 되면 문자는 입력버퍼에 저장되고 cin은 이 버퍼의 문자를 정수형 변수에 저장하려고 하므로 정상 저장이 되지않고 에러가 나는 것이다 문자열 입력 시에도 \n 이 입력 버퍼에 남아서 문제가 되곤하니 이전 cin 사용 후 cin 이나 getline 등으로 새로운 자료형의 입력을 받을 때에는 항상 cin.ignore() 를 사용해서 입력버퍼를 비워주고 사용하자 2022. 6. 21.