일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- sprintboot
- git명령어
- 스페인
- http상태코드
- Kotlin
- 그라나다
- 마드리드
- 바르셀로나
- b-tree index
- 코프링
- HTTP #웹기술
- db index
- kopring
- 스프링 AOP
- 관심지향프로그래밍
- 400에러
- 세비야
- 아펠가모 선릉
- c# scv
- elk
- 아펠가모
- @Component
- 아펠가모선릉
- Srping AOP
- 스페인 준비물
- 코틀린
- kotiln
- 본식후기
- HTTP
- 코틀린 함수
- Today
- Total
목록끄적끄적 (64)
끄적이는 메모장
# tuple std::pair의 경우 두 개의 element를 한번에 담을 수 있는 object 였다. std::tuple의 경우는 pair가 확장되어 이종의 타입의 element를 갯수 제한 없이 담을 수 있는 object 이다. # std::make_tuple 주어진 element로 부터 type을 결정하여 tuple을 생성한다 auto tuple1 = std::make_tuple(1, 'a', 2.0); // tuple # std::get 주어진 tuple에서 위치를 기반으로 element 값을 반환한다. auto tuple2 = std::make_tuple(100, 'A', 3.0); auto get1 = std::get(tuple2); // 100 std::get(tuple2) = 'B' //..
# std::all_of 주어진 범위의 값들이 주어진 조건을 모두 만족하는 경우 -> true 아니면 false를 반환 혹은 주어진 범위가 empty라면 true # std::any_of 주어진 범위 값들 중 하나라도 조건을 만족하는 경우 -> true, 모두 만족하지 못하는 경우 false를 반환 혹은 주어진 범위가 empty라면 false # std::none_of 주어진 범위의 값들이 모두 주어진 조건을 만족하지 못하는 경우 -> true 아니면 false를 반환 혹은 주어진 범위가 empty라면 true int main() { std::vector v {4,7,10}; std::all_of(v.begin(), v.end(), [](int i){return i%3}) -> true std::all_..
#std::make_pair std::make_pair(element1, element2) 간단히, 두 element를 묶어 쌍으로 구성해주는 기능을 한다. 파라메터로는 first : 쌍의 첫 번째 element 를 가리킴 second : 쌍의 두 번째 element 를 가리킴 ex) std::pair p1 ; p1 = std::make_pare (1, 'a'); p1.first // 1 p1.second // a #std::move 객체에 RValue reference를 반환 해준다. copy를 피하기 위하여 사용된다. ex1) int a = 1; int b; b = a // a = 1, b = 1 b = std::move(a) // b = 1 , a loses its value ex2) - swap ..
# std::enable_shared_from_this shared_ptr을 이용하여 동일한 객체에 대한 소유권을 부여하고 싶은 경우 class 혹은 structure를 enable_shared_from_this를 상속받게 한다. 그이유는 shared_ptr을 이용하여 단순히 객체에 대한 소유권을 공유하려고 할 때, 잘못된 참조가 발생할 수 있는데 먼저 객체에 대한 소유권을 보유한 쪽에서 객체를 소멸시켜 버림으로써 나중에 소유권을 공유한 쪽에서 참조 문제가 발생하는 것이다. enable_shared_from_this의 사용은 이렇게 객체의 생성 및 소멸에 의한 참조 문제를 방지하기 위해 사용이 된다. class A : public std::enable_shared_from_this { .... } int..
#mutex std::mutex 란 멀티 스레딩 상에서 하나의 자원에 대해서 두 프로그램이 읽기/쓰기를 할 때 발생할 수 있는 동기화 문제를 막기위해 공통으로 사용하는 자원에 lock을 걸어주는 역할을 수행해준다. 몇가지 기능으로 lock() - thread가 lock을 얻어오기 위한 기능, lock을 얻을 때 까지 대기 try_lcok() - thread가 lock 점유를 시도하고 성공(true), 실패(false)를 바로 반환 unlock() - lock을 해제함 당연한 말이지만 lock()을 동시에 호출하면 데드락 상황이 발생할 가능성이 큼 ex) static int count = 0; int main() { std::mutex m; std::thread t1([&] { for (int i=0; i
#std::bind참고 : http://egloos.zum.com/sweeper/v/3007638 std::bind(함수의주소, 인자1, 인자2, ....); 간단히 말하면 호출이 가능한 객체에 인수를 바인딩 하는 것 ex) void hello(const string& s) { cout
# lambda expression __ 오개념 수정은 환영합니다 (_._ ) lambda expression은 함수를 미리 선언하는 것이 아니라 필요할 때 일회성으로 사용 하는 것을 의미한다. lambda expression은 다양한 모양은 기본적으로 다음과 같다. [캡쳐블록] (인수목록) -> 반환형 {return 동작정의;}(인수값); 캡쳐 블록은 외부 변수를 사용할 때 괄호 내부에 외부변수를 나타내며, 외부 변수가 없는경우 괄호만 [] 표시한다. 인수 목록은 return을 위한 동작을 정의시 인수가 필요하다면 사용되며, 실제 값은 맨 뒤 인수 값을 통해 전달한다. 반환형은 명시적으로 지정할 수 있으며, 반환형이 없는 경우 return되는 반환 형으로 타입이 결정된다. (인수록목과 반환형은 생략이 ..
# range for loop 예를 들어 특정 벡터에 for loop 연산을 수행 하고 싶다. 1. 기존 vector temp_vector; for (vector::iterator v = temp_vector.begin; v != temp_vector.end(); ++temp_vector) { .... } 2. auto를 이용할 수 있다. 1 보다 조금 더 간단 해진다. vector temp_vector; for (auto v = temp_vector.begin; v != temp_vector.end(); ++temp_vector) { .... } 3. range for loop를 사용해보자 vector temp_vector; for (auto v : temp_vector) { .... } 단, 주의할 ..