Std::elementlerin bitişik olmasını garanti vektör?
Sorum basit: std::elementlerin bitişik olmasını garanti vektör? Sipariş word, std ilk elemanı bir gösterici kullanabilir miyim::C-dizisi bir vektör olarak?
Eğer hafızam beni yanıltmıyorsa, C standart böyle bir garanti vermedi. Ancak, std::vector gereksinimleri neredeyse imkansız eğer öğeleri bitişik olsaydı onları karşılamak için oldu böyle.
Birileri bu açıklık miyim?
Örnek:
std::vector<int> values;
// ... fill up values
if( !values.empty() )
{
int *array = &values[0];
for( int i = 0; i < values.size(); i )
{
int v = array[i];
// do something with 'v'
}
}
CEVAP
Bu C 98 standart doğru kaçırmış oldu ama daha sonra bir TR bir parçası olarak eklendi. Önümüzdeki C 0x standart bir gereği olarak elbette bu içerir.
N2798 (C 0x taslak):
23.2.6 Sınıf şablonu vektör [vektör]
1 Bir vektör rasgele erişim kullanımına destekleyen bir dizi kapsayıcı. Buna ek olarak, destekler (itfa edilmiş) sabit zaman takın ve sonuna; Ekle sil işlemleri ve orta al doğrusal zamanda silmek. Depolama yönetim ipuçları verimliliğini artırmak için verilebilir olsa da otomatik olarak ele alınır. Bir unsurları vektör bitişik olarak, eğer T v bir vektör ise bazı tür diğer deyişle, saklanır bool, = = &[0] için n v kimlik &v[n] 0 < dir daha;= n < v. size().
Kilitleme birden çok iş parçacığı'...
Nasıl vektör görüntüleri Güncellemeler...
Eğer içinde geri dönersem bir blok ile...
C vektörleri, genel vektör ...
Nasıl bir vektör bir öğenin dizin bula...