#include결과#include using namespace std; // 서버/ 클라이언트간에 주고 받는 패킷 struct Packet { unsigned short Index; // 패킷 인덱스 unsigned short BodySize; // 패킷 보디(실제 데이터)의 크기 char acBodyData[100]; // 패킷의 데이터 }; int main() { Packet Pkt1; Pkt1.Index = 1; Pkt1.BodySize = 10; Packet Pkt2; Pkt2.Index = 2; Pkt2.BodySize = 12; Packet Pkt3; Pkt3.Index = 3; Pkt3.BodySize = 14; deque< Packet > ReceivePackets; // 뒤에 추가 ReceivePackets.push_back( Pkt2 ); ReceivePackets.push_back( Pkt3 ); // 앞에 추가 ReceivePackets.push_front( Pkt1 ); // 저장된 패킷 정보 출력 for( deque< Packet >::iterator iterPos = ReceivePackets.begin(); iterPos != ReceivePackets.end(); ++iterPos ) { cout << "패킷 인덱스: " << iterPos->Index << endl; cout << "패킷 바디 크기: " << iterPos->BodySize << endl; } cout << endl << "역방향으로 출력" << endl; for( deque< Packet >::reverse_iterator iterPos = ReceivePackets.rbegin(); iterPos != ReceivePackets.rend(); ++iterPos ) { cout << "패킷 인덱스: " << iterPos->Index << endl; cout << "패킷 바디 크기: " << iterPos->BodySize << endl; } cout << endl << "배열 방식으로 접근" << endl; // 저장된 총 패킷 수 int ReceivePacketCount = ReceivePackets.size(); cout << "총 패킷 수: " << ReceivePacketCount << endl; for( int i = 0; i < ReceivePacketCount; ++i ) { cout << "패킷 인덱스: " << ReceivePackets[i].Index << endl; cout << "패킷 바디 크기: " << ReceivePackets[i].BodySize << endl; } // 첫 번째, 마지막 위치에 있는 패킷 Packet& FirstPacket = ReceivePackets.front(); cout << "첫 번째 패킷의 인덱스: " << FirstPacket.Index << endl; Packet& LastPacket = ReceivePackets.back(); cout << "마지막 패킷의 인덱스: " << LastPacket.Index << endl; // at을 사용하여 두 번째 패킷 Packet& PacketAt = ReceivePackets.at(1); cout << "두 번째 패킷의 인덱스: " << PacketAt.Index << endl; // 첫 번째 패킷 삭제 ReceivePackets.pop_front(); cout << "첫 번째 패킷의 인덱스: " << ReceivePackets[0].Index << endl; // 마지막패킷삭제 ReceivePackets.pop_back(); LastPacket = ReceivePackets.back(); cout << "마지막 패킷의 인덱스: " << LastPacket.Index << endl; // 모든 패킷을 삭제 if( false == ReceivePackets.empty() ) { cout << "모든 패킷을 삭제합니다." << endl; ReceivePackets.clear(); } }
원형 : iterator insert( iterator _Where, const Type& _Val ); void insert( iterator _Where, size_type _Count, const Type& _Val ); templatevoid insert( iterator _Where, InputIterator _First, InputIterator _Last );
deque< int >::iterator iterInsertPos = deque1.begin(); deque1.insert( iterInsertPos, 300 );지정한 위치에 데이터를 횟수만큼 삽입. 아래는 두 번째 위치에 10을 3번 추가합니다.
iterInsertPos = deque1.begin(); ++iterInsertPos; deque1.insert( iterInsertPos, 3, 10 );지정한 위치에 반복자의 시작과 끝 안에 있는 원소를 삽입. 아래는 두 번째 위치에 deque2의 처음과 끝에 있는 원소를 삽입합니다.
deque< int > deque2; deuqe2.push_back( 20 ); deuqe2.push_back( 30 ); deuqe2.push_back( 40 ); iterInsertPos = deque1.begin(); deque1.insert( ++iterInsertPos, deque2.begin(),deque2.end() );
원형 : iterator erase( iterator _Where ); iterator erase( iterator _First, iterator _Last );
deque1.erase( deque1.begin() );지정한 반복자 구간 안의 원소를 삭제합니다. 아래는 deque1의 첫 번째 요소에서 마지막까지 모두 삭제합니다.
deque1.erase( deque1.begin(), deque1.end() );아래는 insert와 erase 사용 예입니다.
#include결과#include using namespace std; int main() { Packet Pkt1; Pkt1.Index = 1; Pkt1.BodySize = 10; Packet Pkt2; Pkt2.Index = 2; Pkt2.BodySize = 12; Packet Pkt3; Pkt3.Index = 3; Pkt3.BodySize = 14; Packet Pkt4; Pkt4.Index = 4; Pkt4.BodySize = 16; deque< Packet > ReceivePackets; ReceivePackets.push_back( Pkt1 ); ReceivePackets.push_back( Pkt2 ); ReceivePackets.push_back( Pkt3 ); cout << "< insert >" << endl; // 첫 번째 위치에 Pkt3을 삽입 cout << "insert 1" << endl; ReceivePackets.insert( ReceivePackets.begin(), Pkt3 ); for( deque< Packet >::iterator iterPos = ReceivePackets.begin(); iterPos != ReceivePackets.end(); ++iterPos ) { cout << "패킷 인덱스: " << iterPos->Index; cout << " 패킷 바디 크기: " << iterPos->BodySize << endl; } // 두 번째 위치에 Pkt4를 2개 삽입 cout << endl << "insert 2" << endl; ReceivePackets.insert( ++ReceivePackets.begin(), 2, Pkt4 ); for( deque< Packet >::iterator iterPos = ReceivePackets.begin(); iterPos != ReceivePackets.end(); ++iterPos ) { cout << "패킷 인덱스: " << iterPos->Index; cout << " 패킷 바디 크기: " << iterPos->BodySize << endl; } deque< Packet > ReceivePackets2; ReceivePackets2.push_back( Pkt3 ); ReceivePackets2.push_back( Pkt4 ); ReceivePackets2.push_back( Pkt1 ); // ReceivePackets2의 모든 것을 ReceivePackets의 첫 번째 위치에 삽입 cout << endl << "insert 3" << endl; ReceivePackets.insert( ReceivePackets.begin(), ReceivePackets2.begin(), ReceivePackets2.end() ); for( deque< Packet >::iterator iterPos = ReceivePackets.begin(); iterPos != ReceivePackets.end(); ++iterPos ) { cout << "패킷 인덱스: " << iterPos->Index; cout << " 패킷 바디 크기: " << iterPos->BodySize << endl; } cout << endl << "< erase >" << endl; // 두 번째 원소를 삭제한다. cout << "erase 1" << endl; ReceivePackets.erase( ++ReceivePackets.begin() ); for( deque< Packet >::iterator iterPos = ReceivePackets.begin(); iterPos != ReceivePackets.end(); ++iterPos ) { cout << "패킷 인덱스: " << iterPos->Index; cout << " 패킷 바디 크기: " << iterPos->BodySize << endl; } // 두 번째 이후부터 모두 삭제한다. cout << endl << "erase 2" << endl; ReceivePackets.erase( ++ReceivePackets.begin(), ReceivePackets.end() ); for( deque< Packet >::iterator iterPos = ReceivePackets.begin(); iterPos != ReceivePackets.end(); ++iterPos ) { cout << "패킷 인덱스: " << iterPos->Index; cout << " 패킷 바디 크기: " << iterPos->BodySize << endl; } }
원형 : void assign( size_type _Count, const Type& _Val ); templatevoid assign( InputIterator _First, InputIterator _Last );
deque1.assign( 7, 7 );다른 deque의 반복자로 지정한 영역으로 채웁니다.
deque1.erase( deque1.begin(), deque1.end() );
원형 : void swap( dequedeque A와 B를 swap하는 모습을 그림으로 나타내면 아래와 같습니다.& _Right ); friend void swap( deque & _Left, deque & _Right ) template void swap( deque< Type, Allocator>& _Left, deque< Type, Allocator>& _Right );
deque1.swap( deque2 ); swap(deque1, deque2 );[리스트 3] assign, swap
#include결과#include using namespace std; int main() { deque< int > deque1; cout << "assign 1" << endl; deque1.assign( 7, 7 ); for( deque< int >::iterator iterPos = deque1.begin(); iterPos != deque1.end(); ++iterPos ) { cout << "deque 1 : " << *iterPos << endl; } cout << endl << "assign 2" << endl; deque< int > deque2; deque2.assign( deque1.begin(), deque1.end() ); for( deque< int >::iterator iterPos = deque2.begin(); iterPos != deque2.end(); ++iterPos ) { cout << "deque 2 : " << *iterPos << endl; } // swap deque< int > deque3; deque3.push_back(10); deque3.push_back(20); deque3.push_back(30); cout << endl << "swap" << endl; deque3.swap( deque1 ); for( deque< int >::iterator iterPos = deque3.begin(); iterPos != deque3.end(); ++iterPos ) { cout << "deque 3 : " << *iterPos << endl; } for( deque< int >::iterator iterPos = deque1.begin(); iterPos != deque1.end(); ++iterPos ) { cout << "deque 1 : " << *iterPos << endl; } }
최신 콘텐츠