본문 바로가기
728x90

[프로그래밍 공부]44

[Git/SourceTree] 깃 비밀번호 오류 해결 remote: Support for password authentication was removed on August 13, 2021. Please use a personal access token instead. 깃이 기존의 패스워드 방식의 로그인을 폐기하고 퍼스널 엑세스 토큰 방식을 사용하도록 변경하였다. 그런데 비밀번호를 재입력하라는 문구가 뜨지 않아 자격증명을 다시 해야한다. 퍼스널 엑세스 토큰(Persnal Access Token)발급 방법은 아래 링크를 참조하자 https://hyeo-noo.tistory.com/184 [Mac] GitHub push token 오류 해결 Github 오류 7.29일 새벽 갑자기 git push가 안 되는 현상을 겪었다. 오류의 첫 줄이 무슨 말이냐면 Password 인증방식이 일시적으로 brownout(shutdown?)되었다. Password 대신에 personal access token을 사용.. hyeo-noo.tistory.com 소스트리를 새로 설치하면 비밀번.. [프로그래밍 공부]/Git 2022. 1. 17.
[Algorithm] 벡터(Vector)와 리스트(List)의 차이점 벡터(vector) 벡터는 동적배열을 만드는 연산을 수행한다. 따라서 연속적인 메모리를 확보한다. 자신의 요소를 내부의 동적 배열 ( dynamic array )로 복사한다. 임의 접근 연산자를 제공([])하기 때문에 어떠한 값에 접근하든 상수시간이 소요된다 동적배열이기 때문에 배열의 중간에 새로 추가하거나 삭제하면 많은 값이 이동해야하기 때문에 오랜 시간이 걸린다 따라서 중간에 추가 하기보단 뒷부분에 추가한다 ( push_back ) 동적배열이기 때문에 크기의 확장과 축소가 자유롭지만 재할당 비용은 크다. 장점 임의접근을 상수시간에 가능하다. 따라서 읽기에 매우 강하다. 단점 중간에 값을 추가/제거하는 비용이 크다 재할당 비용이 크다 리스트(list) 리스트는 요소들을 양방향 연결리스트의 형태로 관리한.. [프로그래밍 공부]/Algorithm 2022. 1. 15.
[Algorithm] STL Map과 MultiMap 맵과 멀티맵 맵과 멀티맵은 키/값 쌍을 요소로 관리하는 컨테이너이다. 이 두 컨테이너는 키 값에 대한 특정 정렬 기준을 적용하여 요소를 정렬한다. 맵은 중복을 허용하지 않으며, 멀티맵은 허용한다. 맵과 멀티맵을 사용하기 위해서는 을 인클루드 해야한다. 이는 namespace std 안에 정의 되어 있다. 첫 번째 템플릿 파라미터는 키의 자료형이며 두 번째 템플릿 파라미터는 요소의 값의 자료형이다. 맵/멀티맵의 요소는 2가지 요구 사항을 만족하는 어떠한 Key와 T라는 자료형을 사용할 수 있다. 1. 키와 값은 복사할 수 있거나 이동할 수 있어야 한다. 2. 키는 정렬 기준으로 비교할 수 있어야 한다. 세번째 템플릿 파라미터는 정렬 기준이다. 정렬 기준에서 요소는 아무 영향력이 없으며 동등 검사를 할 때에.. [프로그래밍 공부]/Algorithm 2022. 1. 15.
[Algorithm] STL Set과 MultiSet Set과 MultiSet은 자신의 요소를 특정 정렬 기준에 따라 정렬한다. Set과 MultiSet의 큰 차이는 Set은 요소의 중복을 허용하지 않고 MultiSet은 중복을 허용한다는 것이다. Set과 MultiSet을 사용하기 위해서는 을 인클루드 해야한다. 또한 namespace std에 존재한다. 셋과 멀티셋은 정렬 기준에 부합하는 자료형만 넣을 수 있다. 두 번째 템플릿 파라미터에 정렬 기준을 넣을 수 있다. 기본으로는 less이다. less는 연산자 = param2 이 밖에도 많이 있다. 정렬.. [프로그래밍 공부]/Algorithm 2022. 1. 15.
[Algorithm] STL 순방향 리스트 (Forward list) 순방향 리스트 C++11에서 도입된 컨테이너로 자신의 요소를 단방향 연결리스트로 관리한다. 사진 출처 : http://hyeonstorage.tistory.com/259 순방향 연결리스트를 사용하기 위해서는 를 인클루드 해야한다. namespace std 안에 정의되어 있다. 기능 순방향 리스트는 개념적으로 되돌아가지 못하는 리스트와 같다. 따라서 리스트가 제공하지 않는 기능은 제공되지 않는다. 리스트보다 좋은 점은 메모리를 덜 사용하고 실행 시간이 조금 더 빠르다 되돌아가지 못하기 때문에 리스트에는 없는 제약 조건이 몇 가지 있다. 1. 양방향이 아닌 순방향 반복자를 제공한다. 따라서 역방향 연산은 제공되지 않는다. 2. size() 함수를 제공하지 않는다. 공간이나 시간 부하를 만드는 특성을 생략했기.. [프로그래밍 공부]/Algorithm 2022. 1. 15.
[Algorithm] STL 리스트(List) 리스트 리스트는 요소들을 양방향 연결리스트의 형태로 관리한다. 리스트를 사용하기 위해서는 를 인클루드 해야한다. 리스트는 namespace std에 정의되어 있다. 리스트 객체는 앵커(anchor)라 불리는 포인터 2개를 제공한다. 이 두 개의 포인터는 첫 번째와 마지막 요소를 가리킨다. 새로운 요소를 삽입하기 위해서는 이 포인터를 조작해야한다. 이로인해 벡터, 데크, 배열과는 다른 특성이 나타난다. 1. 리스트는 임의 접근을 제공하지 않는다. n번째 요소에 접근하기 위해서는 링크를 타고 가야 한다. 양방향 리스트로 되어있기 때문에 뒤에서도 타고 갈 수 있다. 2. 각 위치에서 요소를 삽입하고 제거하는 연산은 빠르다. 다른 요소의 이동이 필요 없기 때문이다. 포인터만 몇개 고치면 바로 삽입/삭제가 가능하.. [프로그래밍 공부]/Algorithm 2022. 1. 15.
[Algorithm] STL 데크(Deque) 데크 ( deque ) 데크는 벡터와 유사하다. 동적 배열에 요소를 관리하며 임의 접근을 허용한다. 또한 벡터의 거의 동일한 인터페이스를 제공한다. 데크와 벡터의 차이는 테크는 동적 배열의 양 끝이 모두 열려있다. 즉, 앞 뒤 모두 삽입/삭제가 가능하다. 데크를 사용하기 위해서는 를 인클루드 해야한다. 또한 namespace std에 정의되어 있다. 데크의 기능 1. 요소의 삽입/삭제는 동적 배열의 시작과 끝 부분 모두 빠르다. 2. 내부 구조는 요소에 접근할 때 하나 이상의 간접 방식을 취하기 때문에 대체로 요소 접근이나 반복자 이동이 약간 더 느리다. 3. 반복자는 특수한 자료형의 스마트포인터여야 한다. 4. 메모리 블록에 대한 크기 제한이 있는 시스템의 경우 데크가 벡터보다 더 많은 요소를 가질 수.. [프로그래밍 공부]/Algorithm 2022. 1. 15.
[Algorithm] STL 벡터(Vector) 벡터 벡터는 동적배열을 만드는 연산을 수행한다. 벡터를 사용하기 위해서는 를 포함해야 한다. 또한 vector는 namespace std에 존재한다. 벡터의 요소는 어떤 자료형이라도 올 수 있다. 두 번째 템플릿 매개변수로 메모리 모델을 정의할 수 있는데 기본 메모리 모델은 allocator 모델이다. 기능 벡터는 자신의 요소를 내부의 동적 배열로 복사한다. 벡터는 임의 접근을 제공한다. 즉, 위치를 안다면 상수 시간 내에 접근할 수 있다. 동적배열이기 때문에 중간에 데이터를 삽입/삭제 하는 경우 성능이 떨어진다. 벡터는 현재 요소를 저장하기 위한 메모리보다 많은 메모리를 할당한다. 현재 메모리보다 더 많은 요소가 삽입되면 벡터는 재배치를 수행한다. 벡터의 용량은 매우 중요한데 그 이유는 2가지가 있다... [프로그래밍 공부]/Algorithm 2022. 1. 15.
728x90