資料介紹
本文檔的主要內(nèi)容詳細(xì)介紹的是LabVIEW教程之LabVIEW中的泛型容器詳細(xì)資料說(shuō)明。

Google 網(wǎng)站里有個(gè) Google 實(shí)驗(yàn)室,有不少 Google 的產(chǎn)品最初就是放在這個(gè)實(shí)驗(yàn)室里的?,F(xiàn)在 NI 也有 NI 實(shí)驗(yàn)室了。NI 實(shí)驗(yàn)室公布出來(lái)的項(xiàng)目一般是 NI 工程師利用額外時(shí)間做的一些調(diào)查研究。這些項(xiàng)目不是公司的正式產(chǎn)品,但是它們的設(shè)計(jì)很有創(chuàng)新或者是比較有應(yīng)用潛力。與其讓這些項(xiàng)目被埋沒(méi)了,不如先看看用戶對(duì)這些項(xiàng)目的反應(yīng),如果相當(dāng)一部分用戶覺(jué)得某個(gè)項(xiàng)目非常有幫助,或許它就值得我們?yōu)槠湓黾油顿Y,把它作成正式產(chǎn)品了。
我這里給大家介紹其中的一個(gè)項(xiàng)目:“LabVIEW Generic Container Map”。因?yàn)檫@個(gè)項(xiàng)目是我設(shè)計(jì)的,所以對(duì)它了解比較多一些。當(dāng)時(shí),我們打算提出這個(gè)項(xiàng)目的時(shí)候,主要有兩個(gè)目的:第一是幫助用戶編寫有復(fù)雜數(shù)據(jù)結(jié)構(gòu)的應(yīng)用程序;第二是推進(jìn) LabVIEW 向通用編程語(yǔ)言方向做改進(jìn)。
C++ 的程序員基本都很喜歡 STL 這個(gè)模板庫(kù)。程序中常會(huì)使用數(shù)組、隊(duì)列、字符串等等數(shù)據(jù)類型和結(jié)構(gòu),如果自己設(shè)計(jì)實(shí)現(xiàn)這些數(shù)據(jù)結(jié)構(gòu)和相關(guān)的操作,是相當(dāng)耗費(fèi)精力的。好在 STL 實(shí)現(xiàn)了這些數(shù)據(jù)結(jié)構(gòu),和它們常用的操作方法。借用 STL 提供的功能,編程時(shí)很多細(xì)節(jié)方面不需要再去考慮了,這就讓工作簡(jiǎn)化了許多。嘗到 STL 甜頭的程序員,在編寫程序的時(shí)候,已經(jīng)很難離開 STL 了。
STL 中非常重要的一個(gè)部分就是容器。容器用于存放數(shù)據(jù),程序通過(guò)調(diào)用容器的結(jié)構(gòu)函數(shù)保存數(shù)據(jù)到容器或者訪問(wèn)容器中的數(shù)據(jù)。容器也分為不同的類型,如鏈表、隊(duì)列等。它們?cè)跀?shù)據(jù)的組織方式上,或存取方式上有所分別,以適用不同的需求。STL 中的容器和方法都是泛型的或者說(shuō)是數(shù)據(jù)類型無(wú)關(guān)的,就是說(shuō)這些容器可以保存和操作任何類型的數(shù)據(jù)。
其它一些常用的編程語(yǔ)言,如 Java、C# 也都有類似的泛型容器以方便程序員使用。
LabVIEW 的主要方針是簡(jiǎn)化工程師們編寫程序的難度,以前用 LabVIEW 編寫的程序大多是工業(yè)領(lǐng)域流程控制類型的。這種類型的程序用不到太復(fù)雜的數(shù)據(jù)結(jié)構(gòu)和算法,因此,LabVIEW 中對(duì)我們?cè)谟?jì)算機(jī)課程中學(xué)到的那些經(jīng)典數(shù)據(jù)結(jié)構(gòu)以及算法的支持并不多。
但是在我自己用 LabVIEW 多了之后,用它比用 C++ 要順手,任何類型的程序都喜歡使用 LabVIEW 來(lái)編寫,包括一些通常用途的程序。這時(shí)候,LabVIEW 缺乏對(duì)基本數(shù)據(jù)類型支持的缺點(diǎn)就格外突出了。于是我和周圍幾個(gè)同事就想到應(yīng)該在這些方面對(duì) LabVIEW 做一些補(bǔ)充,做一些比較規(guī)范的泛型容器和算法,一方面方便自己,也許還可以提供給別的用戶。
由于這不是正式項(xiàng)目,我們能投入的資源很有限,不可能一開始就做得很全面。作為開始,我們選擇了 Map 容器和它最常用的幾個(gè)方法。首先選擇 Map 一是因?yàn)樗容^常用,二是其它容器中,有些在概念上和 LabVIEW 中已有的一些函數(shù)比較接近,如果選則他們,可能會(huì)引起用戶的誤解。
LabVIEW 中的 Array 操作與 STL 中的 vector 是非常相似的,功能齊全,不需要考慮底層操作如內(nèi)存管理等。STL 中的 deque, queue, stack 等,與 LabVIEW 中的“隊(duì)列”(Queue)操作比較類似。但是 LabVIEW 中的隊(duì)列存在的目的不是為了作容器,而是用于在多線程程序中通訊。在“生產(chǎn)者/消費(fèi)者”程序模式中,經(jīng)常使用隊(duì)列在不同的線程中傳遞數(shù)據(jù)或消息。因?yàn)?LabVIEW 中隊(duì)列操作主要用于不同線程間的通訊,因此它的函數(shù)并沒(méi)有采用 LabVIEW 的主要傳參方式-傳數(shù)據(jù),而是采用了傳引用的方式。
我們實(shí)現(xiàn)的這個(gè) Map(這個(gè)按字面翻譯比較別扭,中文可能翻譯成“字典”還比較合理)泛型容器功能與 C++ STL 中的 Map 是類似的,它主要用于程序經(jīng)常需要按某一關(guān)鍵字查詢數(shù)據(jù)的情況。
Map 已經(jīng)包括了編寫查詢程序時(shí)常用的操作,比如把數(shù)據(jù)放到容器中、查找一個(gè)數(shù)據(jù)、刪除、清空容器等。
我們的 LabVIEW Generic Container Map 內(nèi)部的數(shù)據(jù)是按照平衡二叉樹的方式組織存儲(chǔ)的,它的查詢復(fù)雜度比一般線性數(shù)據(jù)結(jié)構(gòu)的要低。這樣,在數(shù)據(jù)量很大的情況下,使用 Map 的程序效率明顯高于使用數(shù)組的程序。
- LabVIEW的屬性節(jié)點(diǎn)教學(xué) 32次下載
- LabVIEW的程序?qū)嵗?b class="flag-6" style="color: red">詳細(xì)資料說(shuō)明 152次下載
- 使用LabVIEW讀取Excle表格的詳細(xì)資料說(shuō)明 34次下載
- LabVIEW開發(fā)技術(shù)教程之提高LabVIEW開發(fā)速度25技巧的詳細(xì)資料說(shuō)明 18次下載
- LabVIEW開發(fā)教程之LabVIEW界面設(shè)計(jì)秘訣的詳細(xì)資料說(shuō)明 242次下載
- LabVIEW字符串拆分的詳細(xì)資料說(shuō)明 12次下載
- LabVIEW開發(fā)技術(shù)教程之深入淺出軟件加密技術(shù)的詳細(xì)資料說(shuō)明 29次下載
- LabVIEW的VI服務(wù)器詳細(xì)資料說(shuō)明 20次下載
- LabVIEW教程之結(jié)構(gòu)與屬性控制的詳細(xì)資料說(shuō)明 14次下載
- LabVIEW教程之字符串與文件IO的詳細(xì)資料說(shuō)明 24次下載
- 使用LabVIEW設(shè)計(jì)掃雷游戲的詳細(xì)資料說(shuō)明 77次下載
- 基于labview的語(yǔ)音播報(bào)與識(shí)別的詳細(xì)資料說(shuō)明 39次下載
- LabVIEW通信編程的詳細(xì)資料說(shuō)明 26次下載
- LabVIEW不同VI之間相互調(diào)用的詳細(xì)資料說(shuō)明 29次下載
- labview教程之Labview通過(guò)OPC與PLC通訊步驟說(shuō)明 192次下載
- labview生成應(yīng)用程序怎么包括userlist 1.4k次閱讀
- labview怎么記錄時(shí)間和數(shù)據(jù) 6.9k次閱讀
- Java泛型的背景和作用 1.7k次閱讀
- LabVIEW中的動(dòng)態(tài)事件 9.8k次閱讀
- LabVIEW串口示波器設(shè)計(jì) 2.8k次閱讀
- 使用LabView控制DS3900串程通信模塊 2k次閱讀
- LabVIEW的編程之道—事件注冊(cè)和取消注冊(cè)方法 7.6k次閱讀
- Labview創(chuàng)建數(shù)組函數(shù)的方法分享 1.2w次閱讀
- 如何進(jìn)行PLC控制程序的設(shè)計(jì)詳細(xì)資料PPT說(shuō)明 6.9k次閱讀
- 盤點(diǎn)LabVIEW新手5大容易犯的錯(cuò)誤 5.4k次閱讀
- PPT教程之伺服電機(jī)及其驅(qū)動(dòng)技術(shù)的詳細(xì)資料講解 8.9k次閱讀
- PLC常用基本環(huán)節(jié)梯形圖和詳細(xì)文字說(shuō)明詳細(xì)資料概述 1.1w次閱讀
- labview和485串口通信 2.7w次閱讀
- labview怎么調(diào)試?基于labview的USB調(diào)試教程案例分析 1.5w次閱讀
- labview讀取串口數(shù)據(jù) 2.7w次閱讀
下載排行
本周
- 1冷柜-電氣控制系統(tǒng)講解
- 13.68 MB | 4次下載 | 10 積分
- 2安川A1000變頻器中文版說(shuō)明書
- 20.16 MB | 3次下載 | 3 積分
- 3直流電路的組成和基本定律
- 1.67 MB | 2次下載 | 免費(fèi)
- 4丹佛斯2800系列變頻器說(shuō)明書
- 8.00 MB | 1次下載 | 5 積分
- 5PC8011同步開關(guān)型降壓3.5A單節(jié)鋰電池充電管理電路技術(shù)手冊(cè)
- 0.74 MB | 1次下載 | 免費(fèi)
- 6ES7243E+ES8311音頻錄制與播放電路資料
- 0.06 MB | 1次下載 | 5 積分
- 7SDM02 激光測(cè)距模塊產(chǎn)品手冊(cè)
- 0.43 MB | 1次下載 | 免費(fèi)
- 8SDFM 激光測(cè)距模塊模組手冊(cè)
- 0.54 MB | 1次下載 | 免費(fèi)
本月
- 1CH341編程器軟件NeoProgrammer_2.2.0.10
- 20.47 MB | 170次下載 | 1 積分
- 22025智能家居傳感器市場(chǎng)分析及創(chuàng)新應(yīng)用
- 3.11 MB | 43次下載 | 免費(fèi)
- 3RV1126B系列開發(fā)板產(chǎn)品資料
- 4.19 MB | 18次下載 | 免費(fèi)
- 4CH341編程軟件下載
- 2.50 MB | 16次下載 | 5 積分
- 5全志系列-米爾基于T153核心板開發(fā)板 四核異構(gòu)、3路千兆網(wǎng),賦能多元化工業(yè)場(chǎng)景
- 3.05 MB | 12次下載 | 免費(fèi)
- 6【開源】60余套STM32單片機(jī)、嵌入式Linux、物聯(lián)網(wǎng)、人工智能項(xiàng)目案例及入門學(xué)習(xí)資源包
- 10.55 MB | 8次下載 | 免費(fèi)
- 7冷柜-電氣控制系統(tǒng)講解
- 13.68 MB | 4次下載 | 10 積分
- 8特斯拉MODEL S車載充電機(jī)主電路回路原理圖
- 0.81 MB | 4次下載 | 3 積分
總榜
- 1matlab軟件下載入口
- 未知 | 935137次下載 | 10 積分
- 2開源硬件-PMP21529.1-4 開關(guān)降壓/升壓雙向直流/直流轉(zhuǎn)換器 PCB layout 設(shè)計(jì)
- 1.48MB | 420064次下載 | 10 積分
- 3Altium DXP2002下載入口
- 未知 | 233094次下載 | 10 積分
- 4電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191448次下載 | 10 積分
- 5十天學(xué)會(huì)AVR單片機(jī)與C語(yǔ)言視頻教程 下載
- 158M | 183356次下載 | 10 積分
- 6labview8.5下載
- 未知 | 81604次下載 | 10 積分
- 7Keil工具M(jìn)DK-Arm免費(fèi)下載
- 0.02 MB | 73824次下載 | 10 積分
- 8LabVIEW 8.6下載
- 未知 | 65991次下載 | 10 積分
電子發(fā)燒友App





創(chuàng)作
發(fā)文章
發(fā)帖
提問(wèn)
發(fā)資料
發(fā)視頻
上傳資料賺積分
評(píng)論