導航:首頁 > 編程語言 > stl編程怎麼樣

stl編程怎麼樣

發布時間:2022-10-19 02:37:59

『壹』 西門子PLC編程STL語言到底是啥意思啊看不懂。求大神指導

STL是PLC編程的一種,和梯形圖是不同的形式,而目的都是實現某個控制的功能。這個代碼是一系列的條件,從而實現不同的跳轉。具體目的是什麼,要根據實際的控制目的來解釋。

『貳』 誰來解釋下c++中的STL用來做什麼的,推薦點學習資料

關於STL網上資料還是很多的,以下是對初學者較為好理解的:

STL(Standard Template Library),即標准模板庫,是一個具有工業強度的,高效的C++程序庫。它被容納於C++標准程序庫(C++ Standard Library)中,是ANSI/ISO C++標准中最新的也是極具革命性的一部分。該庫包含了諸多在計算機科學領域里所常用的基本數據結構和基本演算法。為廣大C++程序員們提供了一個可擴展的 應用框架,高度體現了軟體的可復用性。這種現象有些類似於Microsoft Visual C++中的MFC(Microsoft Foundation Class Library),或者是Borland C++ Builder中的VCL(Visual Component Library)

從邏輯層次來看,在STL中體現了泛型化程序設計的思想(generic programming),引入了諸多新的名詞,比如像需求(requirements),概念(concept),模型(model),容器 (container),演算法(algorithmn),迭代子(iterator)等。與OOP(object-oriented programming)中的多態(polymorphism)一樣,泛型也是一種軟體的復用技術。

從實現層次看,整個STL是以一種類型參數化(type parameterized)的方式實現的,這種方式基於一個在早先C++標准中沒有出現的語言特性--模板(template)。如果查閱任何一個版本 的STL源代碼,你就會發現,模板作為構成整個STL的基石是一件千真萬確的事情。除此之外,還有許多C++的新特性為STL的實現提供了方便。

沒有C++語言就沒有STL,這么說毫不為過。一般而言,STL作為一個泛 型化的數據結構和演算法庫,並不牽涉具體語言(當然,在C++里,它被稱為STL)。也就是說,如果條件允許,用其他語言也可以實現之。這里所說的條件,主 要是指類似於"模板"這樣的語法機制。如果你沒有略過前一節內容的話,應該可以看到,Alexander Stepanov在選擇C++語言作為實現工具之前,早以採用過多種程序設計語言。但是,為什麼最終還是C++幸運的承擔了這個歷史性任務呢?原因不僅在 於前述那個條件,還在於C++在某些方面所表現出來的優越特性,比如:高效而靈活的指針。但是如果把C++作為一種OOP(Object- Oriented Programming,面向對象程序設計)語言來看待的話(事實上我們一般都是這么認為的,不是嗎?),其功能強大的繼承機制卻沒有給STL的實現幫上 多大的忙。在STL的源代碼里,並沒有太多太復雜的繼承關系。繼承的思想,甚而面向對象的思想,還不足以實現類似STL這樣的泛型庫。C++只有在引入了 "模板"之後,才直接導致了STL的誕生。這也正是為什麼,用其他比C++更純的面向對象語言無法實現泛型思想的一個重要原因。當然,事情總是在變化之 中,像Java在這方面,就是一個很好的例子,jdk1.4中已經加入了泛型的特性。

此外,STL對於C++的發展,尤其是模板機制,也起到了促進作用。比如: 模板函數的偏特化(template function partial specialization),它被用於在特定應用場合,為一般模板函數提供一系列特殊化版本。這一特性是繼STL被ANSI/ISO C++標准委員會通過之後,在Bjarne和Stepanov共同商討之下並由Bjarne向委員會提出建議的,最終該項建議被通過。這使得STL中的一 些演算法在處理特殊情形時可以選擇非一般化的方式,從而保證了執行的效率。STL是最新的C++標准函數庫中的一個子集,這個龐大的子集占據了整個庫 的大約80%的分量。而作為在實現STL過程中扮演關鍵角色的模板則充斥了幾乎整個C++標准函數庫.

在STL還沒有降生的"黑暗時代",C++程序員要完成前面所提到的那些功能,需要做很多事情(不過這比起C程序來,似乎好一點),程序大致是如下這個樣子的:

#include <stdlib.h>
#include <iostream.h>

int compare(const void *arg1, const void *arg2);

void main(void)
{
const int max_size = 10; // 數組允許元素的最大個數
int num[max_size]; // 整型數組

// 從標准輸入設備讀入整數,同時累計輸入個數,
// 直到輸入的是非整型數據為止
int n;
for (n = 0; cin >> num[n]; n ++);

// C標准庫中的快速排序(quick-sort)函數
qsort(num, n, sizeof(int), compare);

// 將排序結果輸出到標准輸出設備
for (int i = 0; i < n; i ++)
cout << num[i] << "\n";
}

// 比較兩個數的大小,
// 如果*(int *)arg1比*(int *)arg2小,則返回-1
// 如果*(int *)arg1比*(int *)arg2大,則返回1
// 如果*(int *)arg1等於*(int *)arg2,則返回0
int compare(const void *arg1, const void *arg2)
{
return (*(int *)arg1 < *(int *)arg2) ? -1 :
(*(int *)arg1 > *(int *)arg2) ? 1 : 0;
}

試著使用一下STL,看看效果如何。
#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

void main(void)
{
vector<int> num; // STL中的vector容器
int element;

// 從標准輸入設備讀入整數,
// 直到輸入的是非整型數據為止
while (cin >> element)
num.push_back(element);

// STL中的排序演算法
sort(num.begin(), num.end());

// 將排序結果輸出到標准輸出設備
for (int i = 0; i < num.size(); i ++)
cout << num[i] << "\n";
}

這個程序的主要部分改用了STL的部件,看起來要比第一個程序簡潔一 點,你已經找不到那個討厭的compare函數了。這個程序是足夠健壯的。

下面我們來看看這個絕版的C++程序。
#include <iostream>
#include <vector>
#include <algorithm>
#include <iterator>

using namespace std;

void main(void)
{
typedef vector<int> int_vector;
typedef istream_iterator<int> istream_itr;
typedef ostream_iterator<int> ostream_itr;
typedef back_insert_iterator< int_vector > back_ins_itr;

// STL中的vector容器
int_vector num;

// 從標准輸入設備讀入整數,
// 直到輸入的是非整型數據為止
(istream_itr(cin), istream_itr(), back_ins_itr(num));

// STL中的排序演算法
sort(num.begin(), num.end());

// 將排序結果輸出到標准輸出設備
(num.begin(), num.end(), ostream_itr(cout, "\n"));
}

在這個程序里幾乎每行代碼都是和STL有關的(除了main和那對花 括弧,當然還有注釋),並且它包含了STL中幾乎所有的各大部件(容器container,迭代器iterator, 演算法algorithm, 適配器adaptor)

推薦資料 <<C++ Templates 中文版>>
《泛型編程與-STL中文版》
《C++ STL 中文版》
《Effective.STL中文版》

『叄』 我真不知道c++的stl有神嗎優勢 求指導

可以把STL當成C++的一個強大的演算法庫。其中包含了很多常用,且高效,且安全的演算法。
使用STL可以節約開發人員的開發時間,測試時間,節約成本。
例如STL提供了豐富的容器,Vector,Set,Map等等。
由於使用了模板,這些容器幾乎可以應用於各種場合,不需要開發人員自行設計。

『肆』 PLC編程語言STL是什麼

PLC編程語言中的STL是步進觸點指令,用在步進梯形圖中。

『伍』 PLC編程語言STL是什麼

PLC廠家設計了專門用於編制順序控製程序的指令和編程元件。 其中,STL為步進梯形指令(Step Ladder Instruction)。 SET:置位,使觸點閉合。 RET:復位,使之斷開。 使用STL指令時應該注意以下一些問題: 1)與STL觸點相連的觸點應使用LD或LDI指令,即LD點移到STL觸點的右側,直到出現下一條STL指令或出現RET指令,RET指令使LD點返回左側母線。各個STL觸點驅動的電路一般放在一起,最後一個電路結束時—定要使用RET指令。 2)STL觸點可以直接驅動或通過別的觸點驅動Y、M、S、T等元件的線圈,STL觸點也可以使Y、M、S等元件置位或復位。 3)STL觸點斷開時,CPU不執行它驅動的電路塊,即CPU只執行活動步對應的程序。在沒有並行序列時,任何時候只有一個活動步,因此大大縮短了掃描周期。 4)由於CPU只執行活動步對應的電路塊,使用STL指令時允許雙線圈輸出,即同一元件的幾個線圈可以分別被不同的STL觸點驅動。實際上在一個掃描周期內,同一元件的幾條OUT指令中只有一條被執行。 5)STL指令只能用於狀態寄存器,在沒有並行序列時,一個狀態寄存器的STL觸點在梯形圖中只能出現一次。 6)STL觸點驅動的電路塊中不能使用MC和MCR指令,但是可以使用CJP和EJP指令。當執行CJP指令跳人某一STL觸點驅動的電路塊時,不管該STL觸點是否為「1」狀態,均執行對應的EJP指令之後的電路。 7)與普通的輔助繼電器一樣,可以對狀態寄存器使用LD、LDI、AND、ANI、OR、ORI、SET、RST、OUT等指令,這時狀態器觸點的畫法與普通觸點的畫法相同。

『陸』 c++中的stl是怎麼回事啊

STL是C++的標准模板庫,如iostream, fstream, string等都包含其中。在使用時用頭文件把它引進來就可以了。如: #include //引用輸入輸出流 #include //引用棧模板 #include //引用字元串模板 using namespace std; 一種簡單的理解是可以把STL看成是C++的一中「庫函數」,能用簡單的語句實現很多功能的「庫函數」。 另一種簡單的理解是可以把STL看成是C++已經做好的「類」(如:string),它提供了很多訪問方法。 舉個例子:用c++實現字元串"12345"和"67890"連接,並測其長度! 方法一:使用簡單語句. #include using namespace std; void main() { char s1={"12345"},s2={"67890"}; int lenth 1,lenth 2,i,slenth; lenth1=strlen(s 1); lenth2=strlen(s 2); for(i=lenth1; i

『柒』 PLC用STL編程好還是梯形圖編程好,哪種更容易掌握

同意xiaofan1719 的說法,如果想使用指針,多條件判斷,復雜數學計算,子函數調用等高級編程功能就學STL,如果是電氣系統的還是梯形圖比較方便。

『捌』 怎樣學好西門子的STL編程語言

學微機原理和一種匯編語言之後,STL以及S7的程序架構就好理解了。S7CPU的指令系統屬於精簡指令集的東西。關於程序,邏輯部分用LAD,數據運算及處理用STL,混合編程最好。純邏輯的部分,用STL並不能帶來效率,反而減低可讀性。

『玖』 STL和LAD、FBD、SCL等等編程語言各有什麼優勢,什麼情況用什麼語言好呢

http://www.ad.siemens.com.cn/club/bbs/post.aspx?b_id=4&a_id=922742
這不是一兩句話能解決的,看看西門子自己技術論壇上的討論帖吧。

閱讀全文

與stl編程怎麼樣相關的資料

熱點內容
macpdfword轉換器 瀏覽:904
壓縮面膜是什麼材質 瀏覽:353
抖音發布作品怎麼建文件夾 瀏覽:13
安卓如何更改谷歌地區 瀏覽:273
airpods為什麼安卓連上聲音很大 瀏覽:510
聯想伺服器按鈕怎麼開不了機 瀏覽:93
蘋果xrapp程序庫沒有了怎麼辦 瀏覽:843
在上海程序員一個月多少工資 瀏覽:326
k歌解壓圖片 瀏覽:579
cad中清理多餘圖層的命令 瀏覽:989
華為nova8xe是安卓什麼 瀏覽:58
湯姆貓伺服器為什麼免費 瀏覽:274
safenet加密狗怎麼用 瀏覽:41
phpsql查詢變數 瀏覽:104
地磅儀表盤加密方法 瀏覽:480
brew安裝php環境 瀏覽:829
電腦版釘釘如何加密 瀏覽:709
android動畫結合 瀏覽:925
androidfb0 瀏覽:579
我的世界怎麼給伺服器稱號 瀏覽:462