1樓:網友
vector效率不低了,stl針對茄運不同資料集合操作定義了不同的容器,假如容器的操作效率很低,那當年何必要開發標準庫呢。
針對一般的簡單操作來說,用容器代替陣列是很明智的方法,因為陣列的操作是在是不靈活。比如說:當你定義乙個陣列的時候,你肯定事先要定義這個陣列的長度,就是說你在之後對這個陣列的操作的時候,存放的資料最多不能超過這個長度,假如要增加空間的話,會很麻煩。
假如這裡用vector來操作,就不必那麼麻煩,vector沒有硬性規定需要分配空間,就是說,當你存放的資料過多時,它會自動分配空間來保證所有的資料都有存放在vector裡,當然,也可以手動分配。
對於其他類似複製操作的話,效率差不多,建立一顫族梁份副本的方法,無論用什麼都是一樣的。
stl的開發初衷就是為了節省不必要的資料處理,目前看來最實用的屬vector,map和string了。它們分別針對n維陣列,二叉樹或連結串列和字串進行優化操作方式,以簡明的穗啟方法來達到以前要寫很冗長的**才能完成的目的。總的來說stl就是許多對資料集合,字串等優良演算法的集合體。
2樓:網友
首先要看你的需求到底完成什麼,假如能單純用資料簡單處理就姿辯盯能搞定的話,也就沒必要用stl了,灶知但是別聽人瞎說,實際上vector的處理效率很高,stl囊括了非常優秀的演算法,說stl效率的跡和低的你叫它們自己寫個效率高的出來。最後一句,程式設計的目的是完成需求。
vector效率低於c陣列好幾倍,為什麼
3樓:
集合型別肯定比c陣列效率低,大家知道c的陣列是沒下標檢查的(其實c的陣列說白了只是定義乙個指標),也就沒有長度這樣的屬性,而集合有,另外vector這個多功能的集合容器需要考慮各種方法(比如動態陣列、棧、佇列等的相應方法)的實現,而c的陣列通通沒有,只有用中括號或者星號運算子直接去為陣列賦值取值。
4樓:匿名使用者
給你一些參考,希望對你有用。
vector運算起來是不是很慢啊?
5樓:網友
如果不是頻繁的從中間刪除元素的話,vector的效能還是不錯的。
要大量刪除元素請改用list。
當然,這些容器為了通用性與易用性,效能比你自己寫個堆疊或連結串列是有所低的。但一般、甚至大多數需求都可以滿足的。
不知道你做什麼用途呢?
vector效率低於c陣列好幾倍,為什麼
6樓:網友
因為vector能做的事情比陣列多的多,必定要失去一些效能為代價。但是就目前的硬體條件和屬於stl,已經是優化過的,這個效率的差異基本可以忽略。
1) vector支援模板。
2) vector支援自動擴容,記憶體池定製等,比原生陣列好多了。
c++, 我不太明白vector都是什麼時候用呢?
7樓:網友
vector和陣列是一樣的東西,如果你去看原始碼,你會發現vector裡面最終的儲存也是陣列,只是vector將陣列做了類的封裝,這樣原來c語言中的陣列的一些問題,如越界、陣列大小這些都可以在vector中得到比較好的處理,基本上來說,在c++中能用到陣列的地方,都可以用vector來代替,但是有一些地方陣列是不能被vector代替的,也就是記憶體容量較小的地方,你使用過vector就知道,你宣告瞭乙個vector變數後,直接用push_back就可以往裡面儲存東西,而不用去特意的申請記憶體,這是由於vector內部的一些機製造成的,比較複雜,有興趣可以去細看,這裡我簡單說一下:當你往vector記憶體儲資料時,如果這時vector容量已經滿了那麼vector會申請比當前容量大兩倍的記憶體,然後將現有的資料拷貝到新申請的記憶體中,比較耗資源的。
至於你說要不要用new,這個就看你個人具體應用了,new是在記憶體的堆中申請儲存空間的,如果不用new是在棧區申請空間,關於堆疊區,你可以去查查資料看看。new這個東西就像上面說的,是用來向作業系統申請空間的乙個說明,對於vector即便你不申請記憶體,往裡面用push_back新增資料的話,它也會自動的向記憶體申請空間的。
希望幫到你。
sort大體用法就是對乙個容器應用乙個你自定義的大小比較函式來對提供的範圍內的元素排序。
find同樣是來自檔案,用法和sort差不多:
你看下對應的例子就應該能明白了。
你要找v中的30000的話,用find:
find( ,30000) != ; //這個表示找到,否則就是沒有找到了,具體可以看發給你的鏈結裡面的詳細說明和例子。
祝好運。
8樓:旅春冬
vector是c++提供的容器的一種, 也就是儲存資料, 這只是其中的一種。
vector在原本使用陣列的地方均可以替代, 並且其可以動態增長,不需要考慮大小。
另外還有其他幾種型別的容器, vector的優點是隨機存取,也就是可以使用下標訪問。
9樓:網友
vector 是個容器,它定義了很多的方法,它幫你管理動態記憶體。
如果可以用vector就儘量用,vector是所有容器裡面效率最高的,它的內部實現就是陣列。
vector幫你做了動態記憶體分配,你不用費心處理指標的問題,避免了new跟delete操作。
總結下,就是儘量用容器vector,不要自己費心用new來管理指標。
vectorvec;
這樣就建立了乙個空容器,不需要new的,至於它內部的方法和建構函式,可以查閱相關基礎書籍。
vector自動增加大小的那為何還要規定大小?
10樓:
自動擴充的操作是這樣的:
新分配一塊記憶體,把原來的資料拷貝到新的記憶體裡,釋放原來的記憶體。
這樣的操作是要時間的,所以要儘量減少擴充動作。一開始分配乙個合適大小的空間就是這樣的目的 ,而且事後擴充一般也是按原來的空間大小*2分配的,而不是按需分配,以空間換時間。
11樓:網友
目的就是提高效率,如果是自動增加,vector根據每次插入新的元素,都會進行記憶體空間重新分配,這樣效率低下。
關於c++ 引用傳vector的問題
12樓:網友
vector插入的是值。在整個迴圈裡,strtmp的值都沒有變過,它總是指向同乙個字串,所以往vector裡插入的字元指標都指向同乙個字串,所以一起發生變化。
一種改法:char chtmp[256];
改成char *chtmp = new char[256];
這樣每次申請一塊新的記憶體空間,往裡面放字串,然後將指標壓入vector中。
能量傳遞效率低於10%或高於20%的原因是什麼?
13樓:小灰馬
1.生物攝入能量物質時,沒有完全消化,如骨頭,皮毛什麼的,而生物生長過程中骨骼所需要的能量佔較大比例,因而累計下去能量都存在骨頭裡,到下一極的能量自然就越來越低了。
2.傳遞環節太多,或傳遞輔助環節太多。比如一塊石頭,從a到b,若幾經倒手,效率要低;比如用倒騎驢。
就可以,卻用汽車,這樣由於汽車的輔助做功太多,而使效率降低。
14樓:匿名使用者
能量的傳遞是有限的。
蝸輪的傳動效率很低嗎?為什麼?
15樓:跟我玩機械
渦輪蝸桿傳動效率低,很少用,但他們也非得要整明白。
16樓:匿名使用者
第乙個問題,蝸桿傳動在齧合處有相對滑動,當滑動速度較大時,若工作情況不夠好,則會產生較嚴重的摩擦磨損,因此,發熱大,使得潤滑情況惡化,所以,蝸桿傳動的摩擦損失較大,效率較低。在傳動具有自鎖性的時候,傳動的效率將低於,一般僅為左右第二個不知道。
17樓:匿名使用者
把蝸桿齒部做成內齒輪的一部分的樣子,包在蝸輪上,佔蝸輪園周的1/4~1/5,成了環狀。這就是你說的環面蝸桿。這蝸桿看上去是中間一根軸,兩邊各一半園的樣子。市場上很少見到。
18樓:匿名使用者
你要知道蝸輪是蝸桿和齒輪的配合運動他的運動是蝸桿旋轉帶動齒輪轉動。。而這樣的結構不能支援他的高效率。。因為如果要提高效率就必須加大蝸桿的螺距。
但這樣應力就會增大對蝸桿的損耗也大。而且還很容易卡住。
19樓:匿名使用者
a.可實現交叉軸傳動;b.大的傳動比;c.
自鎖,為滿足上述3項要求,蝸桿一般為單頭,公升角較小,效率較低。2.若只考慮:
實現交叉軸傳動,小的傳動比,就可將蝸桿設計為多頭的,加大公升角,傳動效率可達到到90%以上。(與製作的材料,加工的精度都有關係)3.阿基公尺德螺旋線的蝸輪副,加工簡單,使用的普遍,所以市場上有成套**的,其它的如:
圓弧形;平面包絡的由於加工複雜需要定製,有條件的單位自己都可製造,當然這種蝸輪副的承載能力也大(可以大幾倍)上述回答僅供參考!
為什麼《白蛇傳》的結局很悽慘,白蛇傳結局怎麼回事
神仙裡邊也沒有工平可言 白蛇傳結局怎麼回事 第三十集 白素貞目睹自己水漫金山,央及百姓,大感自己難逃鎮於雷峰之下的劫難。她求許仙答應自己被鎮的那日,許仙一定要活著。又強迫小青接受了自己千年的功力。最後她託孤給連翹,求她代盡母職。連翹和十天千里迢迢上南海求觀音開恩。觀音準許白素貞暫避南海,可是要她忘情...
為什麼說豬笨,為什麼說豬很笨
動物?據我所知,最為低階的動物是草履蟲。靠出芽生殖產生下一代。全身沒有神經細胞。應該是最苯的。再談談人 人類被生物學家稱為是高階動物,也就是說人類是世界上最聰明的動物,然而在某種方面上人類卻是最笨的,比如 人類在初級階段,也就是青春期的時候最容易的是什麼 衝動,他們在遇到某種事情的情況下不能出於理智...
為什麼說壟斷會降低效率,反壟斷有哪些措施
壟斷者具有市bai場控制力,可以決定或者影du響市zhi場 從而使其邊際收益和dao邊際成內本接近,來最大化利潤.壟斷下容的市場均衡狀態偏離完全競爭平衡 完全競爭是效率最高的均衡狀態 使得生產者和消費者的總剩餘減少,所以降低了社會的總效率.反壟斷措施有很多,主要就是通過限制大公司合併和限制壟斷行業的...