2011-09-22 21 views
9

Merhaba, boyutları 5 olan vektörlerin boyutları olan bir vektör 9 vektörünü başlatmak istiyorum. Tüm öğeleri sıfır vektörüne başlatmak istiyorum., vektörün bir vektörünü başlatıyor <doubles> C++

Bu şekilde doğru mu?

vector<double> z(5,0); 

vector< vector<double> > diff(9, z); 

OR bunun için daha kısa bir yol var mı?

+1

2D vektör oluşturmanın doğru yolu budur. Sen sadece biraz daha ayrıntılı olmalısın. –

+2

Bu 9x5 boyutunda sabit mi? –

+0

Evet Ellerden önce boyutları biliyorum. Sadece 9 ve 5'i bu soru için rastgele bir inters olarak seçtik. – smilingbuddha

cevap

12

Potansiyel tek bir satırda yapabilirsiniz:

vector<vector<double> > diff(9, vector<double>(5)); 

Ayrıca daha verimli depolama ve erişim için boost::multi_array kullanarak düşünebilirsiniz (bu çifte işaretçi indirection önler).

+1

Alternatif olarak, yönlendirilmiş erişime sahip 45 öğeden oluşan bir vektör de yeterli olabilir ... –

+2

' vektör (5) 'yeterlidir. ikinci argüman '0' olduğu sürece (5, 0)' vektörüne gerek yoktur. – Nawaz

4

bu çalışacaktır eminim: Bir satırda hepsini koyabilirsiniz

vector< vector<double> > diff(9, vector<double>(5,0)); 
5

:

vector<vector<double>> diff(9, vector<double>(5)); 

Bu kullanılmamış yerel değişken önler.

(pre-C++ 11 derleyici size, bir boşluk bırakmak > > gerekir.)

+0

Sözdiziminizde '>>' dikkat edin. Bazı derleyiciler bu semboller arasında bir boşluk gerektirir. – riwalk

+3

@ Stargazer712 bu derleyiciler artık uyumlu değil! : P –

+2

@ R.MartinhoFernandes, uyumlu veya yok, varlar. – riwalk

5

vector< vector<double> > diff(9, std::vector<double>(5, 0)); boyutları derleme zamanında bilinen spesifik durumda Ancak

Eğer olabilir kullanımını C dizi: boyutları sabittir ise

double diff[9][5] = { { 0 } };

4

, bunun yerine std::array ile gidebilirsiniz:

std::array<std::array<double,5>,9> diff = {}; 
+1

Ayrıca, genişliklerin büyüklüğüne bağlıdır. std :: array, yerel kapsamdaki her şeyi korur, bu yüzden bu dizi çok büyükse, adı bana kaçan bazı hataları tetikleyebilirsin. –

+0

Yığın taşması mı? –

İlgili konular