C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[18179] swap(matrix[Idx1], matrix[Idx2]); 한 줄이면 끝!
김백일 [cedar] 1243 읽음    2002-05-05 23:51
만해 님이 쓰신 글 :
: 안녕하세요 만해 입니다.
:
: 지금 STL의 deque<bool> 이란 객체를 사용 하고 있는데요
:
: 이걸 함수로 인자로 넘겨 줘야 하는데요
:
: 자꾸만 에러가 나네요
:
: 안되면 그냥 void* 형으로 형변환해서 날릴까 하는데
:
: 이렇게 되면 어떻게 될지 몰라서 아직 해보지는 않았습니다.
:
: 우선 이게 뭘하는거나면요
:
: 8*8 배열이 있다고 할때요
:
: 임의의 행 을 가르키는
:
: ColIdx[0],ColIxdx[1] 를 가져 와서
:
: 8*8 행렬의 ColIdx[0] 값과 ColIdx[1]을 서로 바꿔 주는 역활을 하려하는데요
:
: void TCrypt::bit_col_swap ( const int Idx1 , const int Idx2 ,deque<bool> &matrix(64))
: {
:
: for ( int i = 0 ; i < 8 ; i ++ )
:   {
:     bool temp;
:     temp = matrix[Idx1 * 8 + i];
:     matrix[Idx1 * 8 + i] = matrix3[Idx2 * 8 + i];
:     matrix[Idx2 * 8 + i] = temp;  
:   }
:
: }
:
: 이 소스가 함수로 만들려고 하는 부분인데요
:
: 위에 나와있는 matrix3를 함수의 인자를 통해 받을려고 하는데 안되네요
:
: 고수님들의 조언 부탁 드립니다.

vector나 deque을 써서 matrix를 만드는 방법은
C/C++ Tip'N Tricks에 올렸습니다.
http://www.borlandforum.com/impboard/impboard.dll?action=read&db=cpp_tip&no=2

그러니까 굳이 2차원을 1차원으로 변환하는 위의 코드를 쓰실 필요는 없겠구요.

그리고 STL을 쓰실 때는 typedef을 잘 쓰시면 타이핑량도 줄이고 소스도 훨씬 읽기 쉬워집니다.
예를 들어,

typedef deque<bool> bitdeque;
typedef vector<bitdeque> bitmatrix;

실제로 이 행렬을 선언하시려면
bitmatrix bm(8, bitdeque(8));

그런데, 행(行, 가로 줄)을 row, 열(列, 세로 줄)을 column이라고 하지 않나요?
col 대신에 row를 써야겠죠. ^^;

그럼 위의 코드를 수정해보죠.
이 함수는 TCrypt의 멤버일 필요는 없겠네요.

void bit_row_swap(const int Idx1, const int Idx2, bitmatrix& matrix)
{
  assert(0 <= Idx1 && Idx1 < matrix.size()); // 인덱스 범위 체크
  assert(0 <= Idx2 && Idx2 < matrix.size()); // 틀리면 프로그램 종료

  swap(matrix[Idx1], matrix[Idx2]);          // 이 한 줄이면 끝납니다. 넘 간단! ^_^
}





+ -

관련 글 리스트
18171 [만해] STL 좀 알려주세요 만해 824 2002/05/05
18179     swap(matrix[Idx1], matrix[Idx2]); 한 줄이면 끝! 김백일 1243 2002/05/05
18186         Re:swap(matrix[Idx1], matrix[Idx2]); 한 줄이면 끝! 만해 804 2002/05/06
18177     Re:[만해] STL 좀 알려주세요 박세용 825 2002/05/05
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.