[C++, STL] 2차원 벡터(vector)의 range-based for loop 사용

다른 글 [C++, STL] 2차원 벡터 만들기 목적 2차원 벡터의 모든 원소를 Range-based for loop를 이용하여 출력 Range-based for loop는 C++11부터 지원한다. 구현 테스트를 위한 벡터 생성 위와 같이 코드를 작성하면 아래와 같은 5X5 벡터를 만들 수 있다. 0 1 2 3 4 10 11 12 13 14 20 21 22 23 24 30 31 … Read more

[C++, STL] set 원소 iterator 없이 출력(range-based for loop)

*Range-Based for Loop 가 필요해서 C++11 이상에서 동작합니다. iterator 선언 set원소 출력 방법 iterator 미선언 set원소 출력 방법 범위기반 for문에선 iterator를 선언하지 않아도 참조가 가능한데, 이유는 모르겠습니다. 공부가 더 필요합니다.컴파일러는 msvc, gcc에서 동작하는것을 확인했습니다. 그리고 iterator, range based for loop, 벡터의 수행시간을 각각 확인해봤는데 약 백만개를 참조했을때 아래의 결과가 나왔습니다. range based for loop의 벡터 … Read more

[C++, STL] 구조체, pair 벡터 정렬

다른 글 [C++, STL] 알고리즘 문제풀이를 위한 벡터(vector) [C++, STL] 알고리즘 문제풀이를 위한 pair 서론 벡터에 들어갈 수 있는 자료형에 pair와 struct(구조체)가 있다. 이들을 이용하여 하나의 원소에 다수의 자료가 들어갈 수 있다. pair와 struct를 자료형으로 가지는 벡터에서 사용자 지정 함수를 이용하면 특정 자료를 기준으로 정렬할 수 있다. pair 벡터 정렬 정수를 자료형으로 갖는 pair의 first를 … Read more

[C, C++] memset을 이용한 정수배열 초기화

서론 memset은 배열을 초기화할때 유용하게 사용할 수 있다. 반복문을 사용하는것보다 간편하고 시간복잡도에서 약간의 우위를 가진다. 본론 정수 배열을 0, -1로 초기화 C에서는 string.h, C++에서는 cstring을 불러오고 0으로 배열 초기화를 원하는 곳에서 아래와 같이 쓴다. -1로 초기화를 원하면, 0대신 -1을 쓴다. 위 코드와 같이 여러차원의 배열도 초기화 할 수 있다. 그러나 memset은 바이트 단위로 초기화 하므로 … Read more

[C++, STL] 큐에서 구조체 사용

다른 글 [C++, STL] 알고리즘 문제풀이를 위한 큐(queue) 코드 C++의 queue STL을 이용하여 x, y, z 좌표값을 가지는 구조체를 자료형으로 사용하는 큐를 생성 구조체 정의 큐 정의 좌표 큐에 삽입 좌표 큐에서 제거 큐의 최상단 좌표 확인

[C] 단방향 연결리스트(Linked List) 구현

단방향 연결리스트의 연결리스트와 노드 구조체 선언 cnt는 연결리스트의 노드 개수. 연결리스트의 head는 첫 노드, 실제 값이 들어가지는 않으며 head에 연결될 다음노드부터 값이 들어간다. tail노드는 연결리스트의 마지막 노드, 노드 추가시 tail 다음에 연결된다. 연결리스트 초기화 연결리스트의 head노드를 만들어주고 tail노드는 없으므로 NULL. 만약 연결리스트에 실제 값이 들어가는 노드가 하나라면 그 노드는 tail 노드 추가 추가될 tmp노드를 만든 … Read more

[C++, STL] 알고리즘 문제풀이를 위한 pair

서론 pair는 두 종류의 자료를 하나의 컨테이너에 저장할 수 있는 템플릿이다. 순번 이름 1 김자료 2 이구조 3 박페어 위 테이블의 자료를 벡터에 저장하려고 한다. 우선 벡터를 두 개 만들고 첫 번째 벡터에 순번을 넣고 두 번째 벡터에 이름을 넣는 방법이 있다.   0 1 2 V1 1 2 3 V2 김자료 이구조 박페어 그러나 … Read more

[C++, STL] 알고리즘 문제풀이를 위한 셋(set)

서론 set의 특징 셋은 자료를 담을 수 있는 컨테이너다. 그러나 벡터, 리스트 등 시퀀스 컨테이너와는 다르게 원소의 삽입순서에 의미를 두지 않는다. 일단 셋에 원소가 삽입되면 자동으로 오름차순이나 내림차순으로 정렬된다. 따라서 삽입순서가 필요하다면 사용해서는 안된다. 셋의 가장 큰 특징은 중복값을 허용하지 않는 것이다. 셋에 1을 10번 넣으면 첫 한번만 들어가고 나머지는 버려진다. 셋에 원소가 들어가면 그 … Read more