From 54a296d7ab87b9d2341dc4eb1bcb8f59ec3a7816 Mon Sep 17 00:00:00 2001 From: Bruce_Liang Date: Sun, 19 Feb 2023 18:15:39 +0000 Subject: [PATCH] =?UTF-8?q?update=20class=5F102/03=E6=9C=8810=E6=97=A5--ve?= =?UTF-8?q?ctor=E8=AE=B2=E8=A7=A3=E6=9D=BF=E4=B9=A6+=E4=BB=A3=E7=A0=81/vec?= =?UTF-8?q?tor.h.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Bruce_Liang --- .../vector.h" | 46 +++++++++++-------- 1 file changed, 28 insertions(+), 18 deletions(-) diff --git "a/class_102/03\346\234\21010\346\227\245--vector\350\256\262\350\247\243\346\235\277\344\271\246+\344\273\243\347\240\201/vector.h" "b/class_102/03\346\234\21010\346\227\245--vector\350\256\262\350\247\243\346\235\277\344\271\246+\344\273\243\347\240\201/vector.h" index 85c2833..51a0de0 100644 --- "a/class_102/03\346\234\21010\346\227\245--vector\350\256\262\350\247\243\346\235\277\344\271\246+\344\273\243\347\240\201/vector.h" +++ "b/class_102/03\346\234\21010\346\227\245--vector\350\256\262\350\247\243\346\235\277\344\271\246+\344\273\243\347\240\201/vector.h" @@ -16,7 +16,7 @@ namespace bit {} // v2(v1) - // 传统写法 + // 浼犵粺鍐欐硶 /*vector(const vector& v) { _start = new T[v.capacity()]; @@ -26,14 +26,17 @@ namespace bit memcpy(_start, v._start, v.size()*sizeof(T)); }*/ - // 一个类模板的成员函数,又可以是一个函数模板 + + //杩欎釜鍐欐硶鏄负鎷疯礉鏋勯犵殑鐜颁唬鍐欐硶鍋氶摵鍨 + // 涓涓被妯℃澘鐨勬垚鍛樺嚱鏁帮紝鍙堝彲浠ユ槸涓涓嚱鏁版ā鏉 + //杩欐椂鍊欑殑杩唬鍣ㄥ尯闂翠笉浠呬粎閫傞厤浜巚ector浜嗭紝鍙鏄被浼肩殑閮藉彲浠 template vector(InputIterator first, InputIterator last) :_start(nullptr) , _finish(nullptr) , _endofstorage(nullptr) { - while (first != last) + while (first != last)//宸﹂棴鍙冲紑 { push_back(*first); ++first; @@ -48,9 +51,16 @@ namespace bit } // v2(v1) - // 现代写法 + // 鐜颁唬鍐欐硶 + //杩欑鍐欐硶濡傛灉鎯冲儚string閭f牱鍒╃敤甯﹀弬鏋勯犳潵璁﹖mp骞叉椿鏄涓嶉氱殑 + //鍥犱负姝ゆ椂鐨剉ector骞舵病鏈夊甫鍙傛瀯閫狅紝鎵浠ヨ瀹炵幇涓涓凯浠e櫒鍖洪棿鏋勯 + + //涓轰粈涔坰tring鏈夊甫鍙傛瀯閫犺寁ector娌℃湁锛 + //鍥犱负string鏀寔鐢ㄤ竴涓父閲忓瓧绗︿覆鍘绘瀯閫狅紝鍗崇洿鎺ユ瀯閫 + //鑰寁ector鏄厛寮绌洪棿锛屽啀寰閲岄潰push鏁版嵁 + //vector(const vector& v) - vector(const vector& v) // 推荐 + vector(const vector& v) // 鎺ㄨ崘 :_start(nullptr) , _finish(nullptr) , _endofstorage(nullptr) @@ -62,9 +72,9 @@ namespace bit } // v1 = v3 - // 现代写法 + // 鐜颁唬鍐欐硶 // vector& operator=(vector v) - vector& operator=(vector v) // 推荐 + vector& operator=(vector v) // 鎺ㄨ崘 { swap(v); @@ -135,7 +145,7 @@ namespace bit } _start = tmp; - // _finish = _start + size(); size()有问题 + // _finish = _start + size(); size锛堬級鏈夐棶棰 _finish = _start + sz; _endofstorage = _start + n; } @@ -167,10 +177,10 @@ namespace bit assert(pos >= _start); assert(pos <= _finish); - // 满了就扩容 + // 婊′簡灏辨墿瀹 if (_finish == _endofstorage) { - // 扩容会导致pos失效,扩容需要更新一下pos + // 鎵╁浼氬鑷磒os澶辨晥锛屾墿瀹归渶瑕佹洿鏂颁竴涓媝os size_t len = pos - _start; reserve(capacity() == 0 ? 4 : capacity() * 2); pos = _start + len; @@ -209,7 +219,7 @@ namespace bit { if (_finish == _endofstorage) { - // 扩容 + // 鎵╁ reserve(capacity() == 0 ? 4 : capacity() * 2); } *_finish = x; @@ -342,8 +352,8 @@ namespace bit vector::iterator it = find(v1.begin(), v1.end(), 2); if (it != v1.end()) { - // 如果insert中发生了扩容,那么会导致it指向空间被释放 - // it本质就是一个野指针,这种问题,我们就叫迭代器失效 + // 濡傛灉insert涓彂鐢熶簡鎵╁锛岄偅涔堜細瀵艰嚧it鎸囧悜绌洪棿琚噴鏀 + // it鏈川灏辨槸涓涓噹鎸囬拡锛岃繖绉嶉棶棰橈紝鎴戜滑灏卞彨杩唬鍣ㄥけ鏁 v1.insert(it, 20); } // v1.insert(v1.begin(), -1); @@ -357,10 +367,10 @@ namespace bit void test_vector5() { - // 三种场景去测试 - // 1 2 3 4 5 -> 正常 - // 1 2 3 4 -> 崩溃 - // 1 2 4 5 -> 没删除完 + // 涓夌鍦烘櫙鍘绘祴璇 + // 1 2 3 4 5 -> 姝e父 + // 1 2 3 4 -> 宕╂簝 + // 1 2 4 5 -> 娌″垹闄ゅ畬 vector v1; v1.push_back(1); v1.push_back(2); @@ -373,7 +383,7 @@ namespace bit v1.erase(it); }*/ - // 要求删除v1所有的偶数 + // 瑕佹眰鍒犻櫎v1鎵鏈夌殑鍋舵暟 /*vector::iterator it = v1.begin(); while (it != v1.end()) { -- Gitee