999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于STL容器的C++課程綜合案例的設計與實現

2020-08-14 10:02:50張秀梅王文君沈熙
現代信息科技 2020年8期

張秀梅 王文君 沈熙

摘? 要:C++程序設計是軟件工程專業的專業基礎課,也是程序設計的入門課程,從2014年開始對課程進行教與學模式改革,主要做法有精講理論、強化實踐、注重編程能力,文章從實際應用的角度,精選一定的實際案例,通過運用STL的幾個容器進行編寫綜合案例,意在提高學生的編程能力和調試程序的能力,為后續的軟件項目開發的系列課程學習打好基礎。

關鍵詞:C++程序設計;容器;綜合案例;常規血型;幻方

Abstract:C++ program design is a professional basic course in software engineering,is also an introductory course of program design,starting from 2014 mode of teaching and learning reform of the course,the main methods include elaborating theory,strengthening practice and paying attention to programming ability,from the point of view of practical application,this paper selected some actual cases,using STL (standard template library) to write a few container integrated case,intended to improve the ability of the studentsability of programming and debugging process,lay a good foundation for the following series of courses of software project development.

Keywords:C++ programming;container;comprehensive cases;conventional blood type;magic square

0? 引? 言

STL(標準模板庫)是一個高效的C++程序庫,它包含了許多計算機科學領域里所常用的基本數據結構和基本算法。STL是現代C++的精髓,可以說,不會STL很難稱得上掌握了現代C++編程,STL是一種類型參數化的程序設計方法,通過STL的使用可以更好地實現代碼復用。在STL程序設計中,容器(container)就是通用的數據結構。容器用來承載不同類型的數據對象,就如同現實生活中,人們使用容器用來裝載各種物品一樣,但C++中的容器還存在一定的數據加工能力,它如同一個對數據對象進行加工的模具,可以把不同類型的數據放到這個模具中進行加工處理,形成具有一定共同特性的數據結構[1-4]。

1? 基礎知識介紹

1.1? vector

C++面向過程部分存儲一組相同類型的數據可以用一維數組來實現,STL中的vector在內存中占有一塊連續的空間,存儲一個元素序列,可以實現數組的功能,但當需要增加數據元素時,可以直接從vector容器尾端插入,所以vector可以看作一個可自動擴充的動態數組,是一個封裝好的類,而且它提供越界檢查,并可用[]運算符直接存取數據。

1.2? map

map是STL的一個關聯容器,是由{鍵(key),值(value)}對組成,并且元素按鍵排列的集合。第一個可以稱為關鍵字(key),每個關鍵字只能在map中出現一次,第二個則稱為該關鍵字的值(value)。其中key和value可以是任意需要的類型,map容器將數據元素存儲在一個有序的、類似于樹的數據結構中。以下分別是關于map的兩個核心操作:插入和刪除。

(1)map數據插入有三種方式:

第1種:pair---mapname.insert(pair(key,value))

第2種:value_type---mapname.insert(map::value_ type(key, value))

第3種:"array"方式---mapname[key] = value;

(2)map刪除與清空元素的三種方式:

第1種:用關鍵字刪除---Type de= mapname.erase("key");

第2種:迭代器刪除---Map::iteratoriter = mapname.find("key"); mapname.erase(iter);

第3種:用迭代器范圍刪除---mapname.erase(mapname.begin(),mapname.end());//等同于mapname.clear()

另外,set是一個沒有重復的元素,并且元素按有序的方式存儲的集合,基本操作與map相似。

利用STL中容器已經定義的算法和迭代器,可以方便靈活地存取容器中存儲的各種數據元素。

2? 綜合案例的設計

目前,學院的Online Judge System軟件平臺(簡稱“OJ平臺”)上的實驗項目數量雖近150個,能夠體現各個教學知識點,但并不能滿足不同層次學生的需求,尤其缺少STL部分的實驗項目,鑒于此,選取貼近生活的案例,適合初學STL,并可以了解其使用的實驗項目。

案例一:根據常規的血型配對表(如表1所示),選取合適的STL中的容器進行設計。

分析血型配對表,它由三部分構成,起主導作用的父母雙親的血型、分別會得到的子女可能或不可能的血型。對于父母雙親的血型采用容器向量vector進行存儲,對于子女可能出現的血型和不應該出現的血型個數是不確定的,因此采用集合Set進行存儲,最后將父母血型和子女可能或不可能的血型三部分封裝起來采用map容器進行存儲。

案例二:利用vector定義Matrix(矩陣類),實現奇偶幻方的顯示。

C++中矩陣用二維數組來實現,本案例要求利用現成的STL容器來定義一個新的類,并對其進行測試檢驗。測試時需要輸出一個奇偶幻方,而幻方是指將1到n2個數字所組成的n*n階方陣,每條對角線,每行與每列的數字和都相等,并且和為n*(n2+1)/2。奇數幻方(如表2所示)和奇偶幻方(如表3所示)。設計提示:首先采用公有繼承vector定義一個矩陣類Matrix,并且實現輸出運算符重載,然后運用定義好的矩陣類進行奇數幻方函數的編寫,最后通過調用奇數幻方函數實現奇偶幻方的顯示。

3? 結? 論

在線程序評測系統目前已成為程序教學中不可或缺的先進手段。學生按照題目要求編寫程序并提交源代碼,評測系統編譯運行程序?;赟TL綜合案例的設計,不僅完善了在線測試OJ平臺的實驗項目,填充了STL這部分實驗項目的空白,而且讓學生對C++程序設計有了更進一步的認識,對面向對象思想有了更深的理解,甚至有的學生為了按時完成OJ平臺實驗項目的提交,能夠提前預習新知識,這有利于引導學生主動去探索,培養學生學習興趣,提高對后續數據結構課程的先知認識。

參考文獻:

[1] kaizen.STL容器之map [EB/OL].(2017-02-21).https: //www.cnblogs.com/Braveliu/p/6427050.html.

[2] ParaFeel.常用容器Map的四種遍歷方式 [EB/OL].(2017 -03-29).https://blog.csdn.net/wh4656438/article/details/ 68104507.

[3] Keyu_.C++ map容器用法 [EB/OL].(2018-09-22).https://blog.csdn.net/zhuochuyu7096/article/details/82817 197.

[4] WilliamYan12138.C++迭代器操作 [EB/OL].(2019-03 -29).https://blog.csdn.net/baidu_34884208/article/details/ 88362823.

[5] 沈顯君,楊進才,張勇.C++語言程序設計教程:第3版 [M].北京:清華大學出版社,2015.

[6] 閆常友,王敏.C++ STL標準程序庫開發指南:第2版 [M].北京:中國鐵道出版社,2017.

作者簡介:張秀梅(1978—),女,漢族,遼寧鞍山人,講師,碩士研究生,研究方向:中文信息處理。

主站蜘蛛池模板: 亚洲欧美日韩天堂| 91免费国产高清观看| 国产午夜精品一区二区三区软件| 丁香综合在线| 婷婷色狠狠干| 日本三级黄在线观看| 免费看美女毛片| 国产无码精品在线| 深夜福利视频一区二区| 精品久久人人爽人人玩人人妻| 精品亚洲麻豆1区2区3区| 妇女自拍偷自拍亚洲精品| 国产精品冒白浆免费视频| 欧美精品在线免费| 青青青视频91在线 | 玩两个丰满老熟女久久网| 国产成人高清精品免费| 久草视频精品| 永久免费精品视频| 伊人久久大线影院首页| 手机精品视频在线观看免费| 五月婷婷综合色| 思思热在线视频精品| 国产一区二区三区夜色| 亚洲成人高清在线观看| 国产成人一区免费观看| 国产精品免费电影| 女人毛片a级大学毛片免费| 午夜欧美理论2019理论| 91在线视频福利| 国产精品亚洲五月天高清| 国产视频a| 久久成人18免费| 国产主播一区二区三区| 一本大道AV人久久综合| 亚洲综合在线网| 国产女人18水真多毛片18精品| 香蕉久人久人青草青草| 欧美色综合久久| 亚洲AV无码乱码在线观看裸奔 | 日韩黄色精品| 精品一区二区无码av| 国产人成在线视频| 永久免费av网站可以直接看的 | 久久综合AV免费观看| 香蕉久久国产超碰青草| 国产Av无码精品色午夜| 国产第一页免费浮力影院| 国产AV毛片| 国产 在线视频无码| 成人国产免费| 日韩欧美中文| 日日碰狠狠添天天爽| 日韩人妻无码制服丝袜视频| 成年免费在线观看| 国产一级妓女av网站| 91蝌蚪视频在线观看| 国产精品爽爽va在线无码观看| 国产精品密蕾丝视频| 国产在线视频福利资源站| 欧洲高清无码在线| 国产精品亚洲一区二区三区在线观看| 免费在线色| 热热久久狠狠偷偷色男同| 国产精欧美一区二区三区| 综合亚洲色图| 久久永久免费人妻精品| 欧美无专区| 国产无吗一区二区三区在线欢| 亚洲天堂成人在线观看| 五月天综合婷婷| 亚洲欧美在线精品一区二区| 欧美性爱精品一区二区三区| 国产菊爆视频在线观看| 九九九国产| 午夜视频免费一区二区在线看| 日韩精品一区二区三区免费| 精品国产aⅴ一区二区三区| 欧美全免费aaaaaa特黄在线| 国产在线视频自拍| 狠狠五月天中文字幕| 久久精品亚洲专区|