国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

C++/VC++編程的疑難問題及解答

2019-11-17 05:10:13
字體:
來源:轉載
供稿:網友
文本要害字:程序設計/C++/技巧1、[VC問題] 編輯框內的換行?
答:假設要在編輯框內輸出"12345/n6789"。首先要設置編輯框的Multiline屬性為TRUE,在輸出時,除了要加/n,還要有/r。也就是說,假如要12345和6789在兩行顯示,需要輸出12345/r/n6789。代碼如下: m_strData = "12345/n67890";   // m_strData是和編輯框關聯的變量
UpdateData(FALSE);     //更新控件
2、[C++標準程序庫的問題] list的迭代器是否可以隨機移動?
答:由于list的內部實現是雙向鏈表,鏈表就要求迭代器(指針)只能依次從前向后(或從后向前)移動,依次移動一個位置,因此list只定義了++和--操作符,而沒有定義+、-、+=和-=等操作符。所以要想list的迭代器移動一段距離,就需要自己編程實現,用一個小循環就行了,代碼如下: #include <list>
using namespace std;
list myList;
… // myList的初始化及其他操作
list::const_iterator itList = myList.begin();
// itList向前移動len個距離
for ( int i= 0; i < len; i++ )
{
 ++itList;
}
… // 其他操作3、[C++標準程序庫的問題] 在刪除操作很多的情況下,應該選擇什么樣的容器?
答:按照標準程序庫的說明,當刪除/插入只發生在容器的尾部時,應該使用vector;當刪除/插入只發生在容器的首/尾部時,應該使用deque;當刪除/插入操作很多,而且刪除/插入不是只在容器的首尾,這時應該選擇list。
  但是這里也有一個問題,在使用list時,由于其迭代器只能一次移動一個位置,在有大量刪除的操作時,需要大量的迭代器移動操作,因此使用list的效率會很低;list的另一個缺點是,占用空間要比同等容量大小的vector要大,這是由于list的實現需要指針,每個元素就多比vector中的元素多兩個指針(雙向鏈表),因此在每個元素都很小(幾個字節),而且元素數量很大時,使用list就非常浪費空間了。
  假如使用vector,那么刪除中間元素會導致大量的元素移動操作,效率也不高,為了解決這個問題,我們可以這樣作:使用vector容器,但是不直接刪除元素,而是再申請一個臨時vector,將原來vector中未刪除的有用元素依次加入/保存到臨時vector,然后用這個臨時vector替換原來的vector,假如實現知道要刪除的元素的個數,那么可以事先預留臨時vector的空間,再將有用元素存到臨時vector中,代碼如下: #include <vector>
using namespace std;
vector myVec;
…     // myVec的初始化以及其它操作
vector tempVec;
     // 刪除myVec中的num個元素
tempVec.reserve( myVec.size() - num ); // 預留臨時vector的空間for ( ;; )
{
 將myVec中的有用元素存到tempVec中;
}myVec.swap( tempVec ); // myVec的容量等于或稍大于myVec.size()
…   // 其它操作這只是我目前總結的幾個問題,以后碰到問題隨時解決,隨時總結。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 手游| 古蔺县| 广德县| 博爱县| 东海县| 余姚市| 潞西市| 黄平县| 沧源| 封丘县| 武宣县| 惠来县| 江安县| 青岛市| 平远县| 潞城市| 白城市| 鸡西市| 辽阳县| 吉林省| 兴山县| 沈丘县| 尤溪县| 沈阳市| 平昌县| 鄂伦春自治旗| 虞城县| 科技| 绥芬河市| 克山县| 扎囊县| 陵水| 五家渠市| 裕民县| 武宣县| 疏附县| 石棉县| 葵青区| 浑源县| 卓资县| 洛宁县|