일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 |
- WebView
- Reflect
- SHA1
- kotlin
- ChromeTab
- AES
- stringprintf
- Chrono
- sprintf
- Scala
- type_traits
- design pattern
- async
- template
- coroutines
- SHA512
- CustomTab
- haskell
- Functional
- go
- sha256
- Observer
- c++
- web
- Android
- traits
- program
- RAII
- Clojure
- ranges
- Today
- Total
목록template (30)
프로그래밍 검색 블로그
프로그래밍 언어에서 함수를 호출할때 절차/객체지향 계열의 프로그래밍 언어는 주로 오버로딩을 통해서 기능들을 관리했지만 함수형 언어 에서는 패턴 매칭을 통해서 기능을 관리했다 C에서 보자면 if문을 함수 호출에 사용하는 꼴 12my_max (x:y:[]) = if x my_max(x[0],x[1]) else -> { val popValue = x.removeAt(0) my_max(popValue, my_max(x)) } }}Colored by Color Scriptercs
123456 vector v = view::ints(0,10); //algorithm/copy.hpp vector cp = v | ranges::copy | action::take(3); cout
view가 새로운 객체를 생성하는데 초점이 있었다면 action은 이미 있는 객체를 바꿀때 사용한다 123456 mt19937 r; vector v = view::ints(0,100); action::shuffle(v, r); cout
각 원소들을 순회하여 직전원소와 일치하면 제거하는 range를 반환한다. 모든 원소를 순회하는 것이 아니라 직전값만 비교한다. 123456 int init[] = {1,1,2,2,1,3,3,4,4,5,5,5}; vector v = init | view::unique; cout
1234 vector v = view::generate(make_random_1_to_10_value) | view::take(10); cout
12345678910111213141516 map m = { {"a", 1}, {"b", 2}, {"c", 3}, {"d", 4}, {"e", 5}, {"f", 6}, }; for(auto& e : m | view::keys){ cout
기본: 0부터 시작되는 수열을 나타낸다. 1view::intscs0,1,2,3,4... operator(): 인자부터 시작하는 값을 나타낸다. 1view::ints(4)cs4,5,6,7,8... operator(): 인자부터 시작하는 값을 나타낸다. 1view::ints(1, 10)cs iota의 int 버전, 시작과 끝이 있다 무한 수열은 컴파일 에러가 나며 take같은 범위지정과 같이 사용해야 한다.
replace첫번쨰로 들어온 원소와 같은게 있다면 두번째로 들어온 원소로 바꾼다. 123 vector v = view::iota(0, 10) | view::replace(6,10); cout
모든 원소를 1:1로 다른 원소로 바꾼다. 만약 조건을 붙이고 싶으면 for_each에 yield_if를 사용할것 12345 vector v = view::iota(0, 10) | view::transform([](int e){ return "value:" + to_string(e) + "\n"; }); cout