본문 바로가기

Programming/C++16

[C++] equal_rage by 용호 2012년 6월 25일 multimap MapQuest; 에서 MapQuest안에 여러가지 값이 들어있을 때 multimap은 중복된 키 값을 허용한다. equal_range를 이용하면 매개변수로 넘겨주는 key값에 해당하는 데이터의 시작과 끝 위치를 넘겨준다. ex) MapQuest mapQuest; mapQuest에 데이터 삽입.. std::pair PairQuest; PairQuest Pairiter; Pairiter = mapQuest.equal_range( key ); key값과 동일한 key값을 가진 데이터들 중 첫번째 위치(lower_bound())와 마지막 위치의 다음 위치(upper_bound())를 쌍으로 pair 객체를 반환한다. 2012. 6. 25.
[C++] iconv를 이용하여 문자 인코딩 방식 변경 By 용호 2011년 9월 16일 서버에서 클라이언트로 문자열을 보내면 서버와 클라 간 문자 인코딩 방식이 달라서 문자가 깨지는 현상이 발생 했었다. 그래서 영어로만 사용하던 중 기획팀에서 한글로 띄워달라는 요청에 방법을 찾고 있었는데 서버에서 전체 공지를 할때 iconv를 사용한다는 것을 알게 되었다. - #include 먼저, iconv를 사용하기 위해서는 헤더파일을 참조 해야한다. - iconv_t cd iconv_t 타입의 변수가 필요하다. src_code : 기존의 문자 인코딩 방식 des_code : 변환될 문자 인코딩 방식 src : 변환 해야 할 문자 des : 변환 후 담기게 될 변수 src_len : 변환해야 할 문자의 크기 des_len : 변환 후 담기게 될 변수의 크기 - cd = iconv.. 2011. 9. 16.
[C++] vector 간의 연산 (set_difference와 copy) By 용호 2011년 4월 23일 토요일 업무를 하던 중 현재 가지고 있는 vector와 새로 들어온 vector를 비교해서 새로운 부분을 추가해야하는 작업이 주어졌었다. 처음에는 이것을 위해 for문을 돌며 노가다 작업을 했었는데 잘 찾아보니 아주 훌륭한 STL 함수가 있었다... 바로 set_difference를 이용하면 아주 간단하게 처리를 할 수 있다. set_difference( 기존의 vector의 시작위치, 기존의 vector의 끝위치, 새로운 vector의 시작위치 , 새로운 vector의 끝위치, 결과를 담을 vector의 시작위치) 사용 예를 들면, vector vecOldVector; vector vecNewVector; vector vecResultVector; vecResultVector.r.. 2011. 4. 23.
[C++] Vector Erase 문제 By 용호 2011년 3월 25일 vector 에서 iterator를 이용하여 for문을 도는 동안 필요 없는 부분을 빼기 위해 vector.erase() 구문을 넣어 주었는데 생각지도 못한 문제가 있었다. vector::iterator iter; for(iter = temp ; iter < temmax; iter++) { if() { ....... } else { tempvector.erase(iter); } } 위와 같은 방식으로 코딩을 했었는데 vector는 erase를 하면 지워진 공간을 뒤에 있는 data들이 앞으로 당겨지며 채워지게 된다. 그렇게 되면 앞으로 당겨진 상태에서 for문의 증감부분에서 iter++을 해줌으로써 값을 하나 건너 뛰게 된다. 1,2,3,4,5,6,7,8,9의 숫자가 있을 경우 5.. 2011. 3. 25.