그렇지는 않습니다. 표준은 bool에 대해 특화된(specialized) vector<bool>
클래스를 명시하고 있습니다. 이 클래스의 목적은 메모리 사용량을 최적화하기
위한 것이고요. htna님의 코드와 비슷한 방식으로 proxy class를 사용합니다.
CBitField::CAccessor와 같은 역할을 하는 것이 vector<bool>::reference이죠.
음. 이제야 좀 기억이 나네요.. 예전에 처음에 STL 볼때의 기억이...
하지만 std::vector<bool> class를 따로 정의할 수야 있겠지만, 이렇다면, 거의 기억하고 있지 않은한 사용하기 힘들겠네요.. 근데 왜 MSDN의 std::vector<T> 설명에서 못봤지...
아, 그렇다면 bitset 과 std::vector<bool> 과의 차이가 뭐죠?
bitset도 비슷한 역활을 하는 듯 한데요...
doldori wrote:
htna wrote:
하지만 vector<bool> 은 좀 메모리 낭비라고 보여지네요...
그렇지는 않습니다. 표준은 bool에 대해 특화된(specialized) vector<bool>
클래스를 명시하고 있습니다. 이 클래스의 목적은 메모리 사용량을 최적화하기
위한 것이고요. htna님의 코드와 비슷한 방식으로 proxy class를 사용합니다.
CBitField::CAccessor와 같은 역할을 하는 것이 vector<bool>::reference이죠.
아, 그렇다면 bitset 과 std::vector<bool> 과의 차이가 뭐죠?
bitset도 비슷한 역활을 하는 듯 한데요...
가장 큰 차이점은 bitset의 길이는 고정인 반면 vector<bool>은 가변이라는 점입니다.
vector<bool>은 이름에서 알 수 있듯이 원소의 삽입, 삭제, iteration 등 vector의
특성을 많이 갖고 있습니다. 반면 bitset은 이런 조작이 불가능한 대신에 비트 연산이
편리하도록 되어 있고요. OP의 구조체 대신이라면 bitset이 더 어울리는 것 같긴 하네요.
^^;;;
bitset과 비슷한 CBitfield를 만들고도,
std::vector<T>가 뭔지 알면서도 물어본 질문이네요..
대답을 보고 잠시 멍~ 했다는.. 왜 그랬지... ㅡ.ㅜ
doldori wrote:
Anonymous wrote:
아, 그렇다면 bitset 과 std::vector<bool> 과의 차이가 뭐죠?
bitset도 비슷한 역활을 하는 듯 한데요...
가장 큰 차이점은 bitset의 길이는 고정인 반면 vector<bool>은 가변이라는 점입니다.
vector<bool>은 이름에서 알 수 있듯이 원소의 삽입, 삭제, iteration 등 vector의
특성을 많이 갖고 있습니다. 반면 bitset은 이런 조작이 불가능한 대신에 비트 연산이
편리하도록 되어 있고요. OP의 구조체 대신이라면 bitset이 더 어울리는 것 같긴 하네요.
WOW Wow!!!
Computer Science is no more about computers than astronomy is about telescopes.
-- E. W. Dijkstra
함 bitfield 를 template class로 짜 봤습니다.해보
함 bitfield 를 template class로 짜 봤습니다.
해보면 재밌을거 같아서..
^^
usage:
WOW Wow!!!
Computer Science is no more about computers than astronomy is about telescopes.
-- E. W. Dijkstra
원 주제와는 거리가 있지만, bitmap 관련해서 검색해보면 원하시는 비
원 주제와는 거리가 있지만, bitmap 관련해서 검색해보면 원하시는 비슷한 기능을 얻을 수 있을 것 같습니다. 예전에 대충 만든 코드가 있습니다:
http://wiki.kldp.org/wiki.php/xbitmap
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
Korean Ver: http://cinsk.github.io/cfaqs/
또는 bitset이나 vector<bool>을 쓰셔도...
또는 bitset이나 vector<bool>을 쓰셔도...
vector<bool> 보기를 돌같이 하자
vector<bool> 보기를 돌같이 하자
라고 이펙티브 STL 18번에 되어있군요;
첫째는 STL컨테이너가 아니다
둘째는 bool을 담고 있지도 않다..
라고 되어있네요; (잘 모릅니다! 본 적이 있어서 남겨놓습니다 ㅎ)
Re: vector<bool> 보기를 돌같이 하자
네, 맞습니다. vector<bool>은 컨테이너의 요구 조건을 만족하지 않습니다.
요것도 맞습니다. :-)
그래도 OP께서 원하시는 구조체를 대신하기에는 부족함이 없지요.
bitset 은 목적에 맞을 수 있습니다.하지만 vector<b
bitset 은 목적에 맞을 수 있습니다.
하지만 vector<bool> 은 좀 메모리 낭비라고 보여지네요...
저기 위에 만든건, 단지 재미를 위해 만들어본 것입니다.
보니깐 bitset이 더 낫네요...
^^;;
PS:
불과 약 30분 정도 사이에..
엄청난 리플들이...
^^
WOW Wow!!!
Computer Science is no more about computers than astronomy is about telescopes.
-- E. W. Dijkstra
[quote="htna"]하지만 vector<bool> 은 좀
그렇지는 않습니다. 표준은 bool에 대해 특화된(specialized) vector<bool>
클래스를 명시하고 있습니다. 이 클래스의 목적은 메모리 사용량을 최적화하기
위한 것이고요. htna님의 코드와 비슷한 방식으로 proxy class를 사용합니다.
CBitField::CAccessor와 같은 역할을 하는 것이 vector<bool>::reference이죠.
bit[32] => char[4]로쓰면될텐데 문제가 있나요.
bit[32] => char[4]
로쓰면될텐데 문제가 있나요..
연산이 귀찮다면 매크로 사용해도 되고..
----------------------------------------------------------------------------
음. 이제야 좀 기억이 나네요.. 예전에 처음에 STL 볼때의 기억이..
음. 이제야 좀 기억이 나네요.. 예전에 처음에 STL 볼때의 기억이...
하지만 std::vector<bool> class를 따로 정의할 수야 있겠지만, 이렇다면, 거의 기억하고 있지 않은한 사용하기 힘들겠네요.. 근데 왜 MSDN의 std::vector<T> 설명에서 못봤지...
아, 그렇다면 bitset 과 std::vector<bool> 과의 차이가 뭐죠?
bitset도 비슷한 역활을 하는 듯 한데요...
로그인을 하지 않고 글을쓰니 "손님"으로 등록이 되네요...글을 지우
로그인을 하지 않고 글을쓰니 "손님"으로 등록이 되네요...
글을 지우고 다시 쓰려고 해도 그렇게 할 수가 없구요..
로그인을 안하다니... 이궁 실수네... ^^;;;
바로 위의글 제가 쓴 글입니다.
그럼...
WOW Wow!!!
Computer Science is no more about computers than astronomy is about telescopes.
-- E. W. Dijkstra
[quote="Anonymous"]아, 그렇다면 bitset 과 std:
가장 큰 차이점은 bitset의 길이는 고정인 반면 vector<bool>은 가변이라는 점입니다.
vector<bool>은 이름에서 알 수 있듯이 원소의 삽입, 삭제, iteration 등 vector의
특성을 많이 갖고 있습니다. 반면 bitset은 이런 조작이 불가능한 대신에 비트 연산이
편리하도록 되어 있고요. OP의 구조체 대신이라면 bitset이 더 어울리는 것 같긴 하네요.
^^;;;bitset과 비슷한 CBitfield를 만들고도,std
^^;;;
bitset과 비슷한 CBitfield를 만들고도,
std::vector<T>가 뭔지 알면서도 물어본 질문이네요..
대답을 보고 잠시 멍~ 했다는.. 왜 그랬지... ㅡ.ㅜ
WOW Wow!!!
Computer Science is no more about computers than astronomy is about telescopes.
-- E. W. Dijkstra
댓글 달기