[[TableOfContents]] == vector == * ë°°ì—´ì„ ëŒ€ì²´í• ìˆ˜ 있는 ìžë£Œêµ¬ì¡°. * include : vector {{{~cpp #include <vector> }}} === ì„ ì–¸ê³¼ í¬ê¸° 잡기 === *ì¼ë°˜ì ì¸ ì„ ì–¸ {{{~cpp vector<int> ar; // int형 ë°ì´í„°ë¥¼ ë„£ì„ vector 컨테ì´ë„ˆ arì„ ìƒì„±. ar.resize(10); // 10개로 잡는다. vector<int>::iterator iter; // ë‚´ë¶€ì˜ ë°ì´í„°ë“¤ì„ 순회하기 위해 필요한 반복ìž. vector<int>::const_iterator i; // ë²¡í„°ì˜ ë‚´ìš©ì„ ë³€ê²½í•˜ì§€ ì•Šì„ ê²ƒìž„ì„ ë³´ìž¥í•˜ëŠ” 반복ìž. }}} * 초기화시 ë°ì´í„° 넣기 {{{~cpp int data[3] = {1,2,3}; vector<int> ar(&data[0], &data[3]); // dataë‚´ì˜ ì •ë³´ê°€ 세팅ëœë‹¤. }}} 질문 : ìƒì‹ì— ì˜ê±°í•´ì„œ 실습 í•´ë³¼ 때 ì € ë¶€ë¶„ì„ {{{~cpp vector<int> ar( &data[0], &data[2] ); }}} 로 í–ˆë”니 ê³„ì† ë¬¸ì œê°€ ìƒê²¨ì„œ.. 오랜 삽질ëì— &data[3] 으로 해야한다는 걸 발견 했습니다. 좀 ì´ìƒí•œ 것 같네요. {{{~cpp data[3]}}} ì´ë¼ëŠ” ê²ƒì€ ë°°ì—´ì˜ ë²”ìœ„ë¥¼ 벗어나는 ì—°ì‚°ì¼í…ë°ìš”.. ê·¸ê³³ì˜ ë¦¬í¼ëŸ°ìŠ¤ë¥¼ 얻어서 ìƒì„±ìžë¡œ 넘겨주는게.. ìƒì‹ì—서 거부했나 봅니다. ë‘번째 ì¸ìžë¡œ ë°°ì—´ 범위를 벗어나는 ê°’ì„ ë°›ëŠ” ì´ìœ 를 혹시 아시는 ë¶„ 계ì‹ë‹ˆê¹Œ? --zennith Iterator 들ì´ë‚˜, ë°°ì—´ì˜ ì˜ì—ì„¤ì •ì€ ê·¸ ëª¨í˜¸ì„±ì„ ë°°ì œí•˜ê¸° 위해서, 마지막 ìžë£Œí˜• + 1ì˜ index 를 가지는 ê²ƒì„ ìƒì‹ìœ¼ë¡œ 취급합니다. MFC, Java 등 여타 ë¼ì´ë¸ŒëŸ¬ë¦¬ë“¤ì˜ indexì ‘ê·¼ 하는법 마찬가지 입니다. ìµìˆ™í•´ 지는 수 ë°–ì— ì—†ì§€ 않ì„까요? --NeoCoin === ë°ì´í„° 넣기 === {{{~cpp ar.push_back(3); // arì˜ ë’¤ìª½ìœ¼ë¡œ 3ì„ ì¶”ê°€í•œë‹¤. ar[5] = 4 // 6ë²ˆì§¸ì— 4 넣기 }}} === 컨테ì´ë„ˆ 순회 === {{{~cpp vector<int>::const_iterator i; // for ì—서 반복ìžë¥¼ ì´ìš©í•œ 순회 1 for(i = ar.begin() ; i != ar.end() ; ++i) cout << *i << endl; // while ì—서 ë°˜ë³µìž ì´ìš©ìˆœíšŒ i = ar.begin(); while( i != ar.end() ) { cout << *i << endl; i++; } // for문ì—서 ì¸ë±ìŠ¤ë¥¼ ì´ìš©í•œ 순회 for(int j = 0 ; j < ar.size() ; ++j) cout << ar[j] << endl; }}} === ë°ì´í„° ì œê±° === {{{~cpp // 6번째 ì›ì†Œë¥¼ ì œê±° ar.erase(ar.begin()+5); // 2~3번째 ì›ì†Œ ì œê±° vector<int>::iterator start, end; start = ar.begin() + 1; // 2번째 end = start+2; // 시작부터 2ê°œ ì‚ì œ ar.erase( start, end); }}} === Cook Book === * ["STL/vector/CookBook"] === Example === {{{~cpp #include <vector> #include <iostream> using namespace std; typedef vector<int> vecCont; typedef vecCont::const_iterator vecIter; int main() { int ar[] = {32,54,654,765,34,4645625}; vecCont nums(&ar[0], &ar[6]); for(vecIter i = nums.begin() ; i != nums.end() ; ++i) cout << *i << endl; for(int j = 0 ; j < nums.size() ; ++j) cout << nums[j] << endl; return 0; } }}} === 벡터 비우기 === * 아래와 ê°™ì€ ë°©ë²•ìœ¼ë¡œ 벡터 ë‚´ìš©ì„ í†µì§¸ë¡œ 지운다. {{{~cpp m_inputMessage.~vector<CString>(); new ( &m_inputMessage ) vector<CString>(); }}} ---- See Also ["STL/VectorCapacityAndReserve"] ---- ["STL"]