|
안녕하세요 만해입니다.
지금 STL의 생소한 환경에 넘 어렵네요
몇몇 님들의 도움으로 근근히 이어 가고 있는데요
Effective STL하고
STL 튜툐리얼, 레퍼런스 가이드를 보면서 하는데요
흑흑~ 아직 잘 모르겠네요
제 질문은 ~
bitdeque matrix1(128);
bitdeque matrix2(128);
bitmatrix matrix3(8,bitdeque(8));
bitmatrix matrix4(8,bitdeque(8));
bitmatrix matrix5(8,bitdeque(8));
bitmatrix matrix6(8,bitdeque(8));
Data16Word_u temp;
bitdeque::iterator iteri;
bitdeque::iterator iterj;
bitmatrix::iterator iterm;
int idx = 0;
for ( iteri = matrix1.begin() ; iteri < matrix1.end(); idx++)
{
*iteri++ = key.Bytes[idx].bits.a;
*iteri++ = key.Bytes[idx].bits.b;
*iteri++ = key.Bytes[idx].bits.c;
*iteri++ = key.Bytes[idx].bits.d;
*iteri++ = key.Bytes[idx].bits.e;
*iteri++ = key.Bytes[idx].bits.f;
*iteri++ = key.Bytes[idx].bits.g;
*iteri++ = key.Bytes[idx].bits.h;
}
copy(matrix1.begin(),matrix1.end(),matrix2.begin());
rotate(matrix1.begin(),matrix1.begin()+6,matrix1.end());
for ( iterj = matrix1.begin(), iteri = matrix2.begin() ;
(iteri < matrix2.end())&&(iterj < matrix1.end()); iteri++,iterj++ )
*iteri = *iteri ^ *iterj;
for (iterm = matrix3.begin(),iteri = matrix1.begin() ; iteri < matrix1.end() ; )
{
for ( bitdeque::iterator h = iterm->begin() ; h < iterm->end() ; iterm ++ )
{
*h = matrix1[*iteri++];
}
}
맨 마지막 for문에 관련된건데요
matrix1은 128 이고요
matrix3, matrix4 는 matrix1을 둘로 쪼개서 앞 부분은 matrix3,
뒷 부분은 matrix4에 집어 넣어야 하느데요
copy(matrix1.begin(),matrix1.begin(),matrix3.begin());
copy(matrix1.begin()+65,matrix1.end(),matrix4.begin());
copy(matrix2.begin(),matrix2.begin()+64,matrix5.begin());
copy(matrix2.begin()+65,matrix2.end(),matrix6.begin());
이런식으로 해결을 할려고 하니깐
안되네요
template <class _RandomAccessIter, class _OutputIter, class _Distance>
inline _OutputIter
__copy(_RandomAccessIter __first, _RandomAccessIter __last,
_OutputIter __result, const random_access_iterator_tag &, _Distance*) {
for (_Distance __n = __last - __first; __n > 0; --__n) {
*__result = *__first;
++__first;
++__result;
}
return __result;
}
여기 함수에서 에러 난다고 뭐라 뭐라 해는데 뭔애긴지는 모르겠고,
또 곤란한게 matrix3는 김백일님께서 알려 주신데로
typedef deque<bool> bitdeque;
typedef vector<bitdeque> bitmatrix;
bitmatrix matrix(64) 로 정의된 상태고,
matrix1은 bitdeque(128)이라서
컨테이너가 틀리는데 서로 copy가 될런지도 모르곘고요 쩝~
부분 복사 할려는데 잘 모르겠네요 좀 알려 주세요
참 그리고 김백일님~ STL 강좌좀 해주세요~
요즘 조금씩 하고 있는데 모르겠네요 강좌좀 해주세요~
|