vector v; int i = 0; cout
C++을 사용하다 보면 중간 값을 구하는 연산으로 흔히들 아래와 같이 쓴다 mid = (l + r ) / 2; mid = (left + right) / 2; // 또는 mid = (start + end) / 2;가끔 다른 사람들이 짜 놓은 소스코드를 보면 아래와 같이 돼있는 걸 본적이 있다. mid = l + (r - l) / 2; mid = left + (right - left) / 2; mid = start + (end - start) / 2;수학적으로는 전혀 차이가 없는데 저렇게 나누는 이유는? Overflow 때문이다. 변수들이 int로 선언된 경우, left + right가 INT_MAX를 넘어서는 경우 overflow가 일어나서 원하는 결과대로 수행이 되질 않는다. 따라서 최소한의 방어벽을 치..
여기 참조.. http://openxb.com/28 으어어.. 약 3~400개 이상의 자료를 관리해야되는데, 아무 생각 없이 평소에 자주쓰는 List로 그냥 자료구조를 짰다. 근데 특정 이벤트를 실행 시킬 때 마다 해당 자료가 정렬이 되어 있어야 한다는 조건이 나중에 붙어서.. List로 짠 지금은 이벤트 실행때마다 소트를 다시 해준다 -_- 그리고 삽입, 삭제가 빈번하게 일어나는데 List로 짠 덕분에 미치고 팔짝 뛰겠다. 차라리 처음부터 우선순위 큐(Priority_Queue)를 이용해서 짤걸... 다 경험이다~~~ 나중엔 잘 하자!!
문자열을 사전 순으로 정렬하기 char d[5][10] = {"dcabe","abdce","abcde","baffg","abcfg"}; std::vector v; for(int i = 0;i < 5;i++) { v.push_back(d[i]); } sort(v.begin(), v.end()); for(int i = 0;i < 5;i++) { printf("%s\n",v[i].c_str()); //printf("%s\n",v.at(i).c_str()); } 설명은 생략~
1. < 를 오버로딩 하는 방법 algorithm 헤더에 정의돼 있는 sort() 펑션은 < 로 정렬한다. 즉 < 를 오버로딩 해주면 된다. struct edge{ int value; bool operator value < b.value; } }; 위 처럼 하면 edge e가 안의 value값으로 정렬 가능하다. edge e[100]; e[0].value = 10; e[1].value = 110; e[2].value = 150; e[3].value = 160; e[4].value = 30; e[5].value = 40; e[6].value = 60; e[7].value = 50; e[8].value = 40; e[9].value = 180; sort(e,e+10); for(int i = 0;i < 10;..
- Total
- Today
- Yesterday
- db
- driver
- android
- source
- C++
- it
- database
- Troubleshooting
- Quiz
- NDK
- kering
- 리눅스
- 드라이버
- API
- gcc
- AWS
- jni
- java
- Python
- C
- 음악
- MFC
- Cloud
- 안드로이드
- algorithm
- jni강좌
- 프로그래밍
- Visual C++
- linux
- winapi
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |