반응형

C, C++ & Linux 10

[C++] STL - next_permutation

next_permutation C++의 algorithm 헤더에 존재하는 next_permutation은 컨테이너에서 만들 수 있는 다음 순열을 반환하는 STL이다. next_permutation 이용한 순열 구하기 int main() { int n, k; cin >> n >> k; // n개의 원소 중 k개 나열하는 순열 vector v; for(int i = 0; i > x; v.push_back(x); } sort(v.begin(), v.end()); // 오름차순 정렬이 되어있어야함 do { for(int i = 0; i k; // n개의 원소 중 k개 선택하는 조합 vector v; for(int i = 0; i < n; ..

C, C++ & Linux/C++ 2022.08.01

[C++] STL - pair, tuple

pair pair는 지정한 2개의 타입의 데이터를 저장하는데 사용한다. 이를 통해 서로 연관된 2개의 데이터를 한 쌍으로 묶어서 다룰 수 있다. pair는 헤더파일에 존재하며 과 헤더파일에 가 포함되기 때문에 셋 중 하나를 사용할 수 있다. make_pair() 함수를 통해 pair 객체를 만들 수 있고 각각 first와 second를 통해 첫번째, 두번째 데이터에 접근할 수 있다. #include #include #include #include using namespace std; int main(){ pair p; p = make_pair(10, 20); cout

C, C++ & Linux/C++ 2022.07.01

[C++] STL - list

list 앞서 봤던 벡터와 덱이 배열 기반 시퀀스 컨테이너였다면 리스트는 노드 기반 이중 연결 리스트로 구현된 시퀀스 컨테이너이다. 따라서 벡터, 덱과 달리 임의의 위치에 있는 원소에 바로 접근할 수 없고 반복자를 통해 순차적으로 접근할 수 밖에 없다는 단점이 존재한다. ※ 리스트의 반복자 리스트의 반복자의 경우 순차적인 작업밖에 수행하지 못하기 때문에 ++, -- 와 같은 연산만 수행할 수 있다. 즉, itr + 5 와 같은 연산은 불가능하다. 하지만 벡터와 덱에서 O(n) 이었던 임의의 위치에 원소 추가 / 제거하는 작업을 O(1)에 수행할 수 있다는 장점이 있다. 리스트의 경우 원하는 위치의 앞과 뒤에 있는 링크값만 바꾸어주면 되기 때문이다. 임의의 위치 원소 접근 순차탐색만 지원 O(n) 맨 앞에..

C, C++ & Linux/C++ 2022.06.29

[C++] STL - vector

STL이란? C++에서 STL이란 Standard Template Library의 약자로 표준 템플릿 라이브러리를 의미한다. C++에는 많은 표준 라이브러리들이 있지만 보통 STL을 말할때는 다음 세개의 라이브러리들을 의미한다. 임의 타입의 객체를 보관할 수 있는 컨테이너(container) 컨테이너에 보관된 원소에 접근할 수 있는 반복자(iterator) 반복자들을 가지고 일련의 작업을 수행하는 알고리즘(algorithm) 그 중 컨테이너는 크게 두 가지 종류로 나눌 수 있다. 먼저 배열과 같이 객체들을 순차적으로 보관하는 시퀀스 컨테이너가 있고 key를 통해 대응되는 값을 찾아주는 연관 컨테이너가 있다. 시퀀스 컨테이너에는 다음과 같이 3개가 존재한다. vector list deque 오늘 포스팅에서..

C, C++ & Linux/C++ 2022.06.29

[Linux] 리눅스의 파일 권한 (Permission)

리눅스의 파일 권한에는 세 가지 종류가 있다. 읽기(read) : 파일을 읽을 수 있는 권한 쓰기(write) : 파일을 수정하거나, 쓰거나, 지울 수 있는 권한 실행(execute) : 파일을 실행할 수 있는 권한 리눅스의 터미널 창에서 ls -l 명령어를 통해 파일의 권한을 확인할 수 있다. 권한은 총 10개의 문자로 구성되어 있고 네 개의 그룹으로 나뉜다. 1번째 문자 : 파일의 종류를 나타냄 - : 정규 파일 d : 디렉토리 l : 링크 2 ~ 4번째 문자 : 파일 주인의 읽기, 쓰기, 실행 권한 5 ~ 7번째 문자 : 파일 주인이 속한 그룹의 읽기, 쓰기, 실행 권한 8 ~ 10번째 문자 : 그 외 유저들의 읽기, 쓰기, 실행 권한 ex) 어떤 파일의 권한이 -rwxrw-r-- 이라면 1번째 문..

C, C++ & Linux 2022.04.07

[C & Linux] 파일 디스크립터(file Descriptor) & 파일 입출력 관련 시스템콜 함수

파일 디스크립터(File Descriptor) Linux/Unix에서 파일은 데이터를 읽을 수 있거나 데이터를 쓸 수 있는 모든 객체를 말한다. 일반적인 정규 파일부터 디렉토리, 소켓, 파이프, 터미널 등등 모든 디바이스도 파일로 취급한다. Linux/Unix에서 프로세스가 이 파일들을 바이트 단위의 입출력으로 다룰 수 있게 하고, 커널 내부의 자료 구조들과의 연결 통로 역할을 하게 하는 것이 파일 디스크립터이다. 프로세스가 실행 중에 파일을 open하면 커널은 해당 프로세스의 파일 디스크립터 숫자 중 사용하지 않는 가장 작은 값을 할당해준다. 그다음 프로세스가 열려있는 파일에 시스템 콜을 이용해서 접근할 때, 파일 디스크립터 값을 이용해서 파일을 지칭할 수 있는 것이다. 기본적으로 할당되는 파일디스크립..

C, C++ & Linux 2022.04.07

[Linux] 리눅스 기본 명령어

ls 현재 위치의 파일 목록 조회 ls -l : 파일의 상세정보 표시 ls - a : 숨김 파일 표시 cd 디렉토리 이동 cd [디렉토리 경로] : 이동하려는 디렉토리로 이동 cd (~) : 홈 디렉토리로 이동 ~ 생략 가능 cd / : 최상위 디렉토리로 이동 cd .. : 상위 디렉토리로 이동 touch 0바이트 파일 생성, 파일의 날짜와 시간을 수정 touch [filename] : filename이라는 이름의 파일을 생성 touch -c filename : filename의 시간을 현재 시간으로 갱신 mkdir 디렉토리 생성 mkdir [dirname] : dirname이라는 이름의 디렉토리 생성 mkdir [dir1] [dir2] : 한 번에 여러 개의 디렉토리 생성 cp 파일 복사 cp [fil..

C, C++ & Linux 2022.03.08
반응형