SORU
11 Mayıs 2009, PAZARTESİ


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
11 Mayıs 2009, PAZARTESİ


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().

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Grace Su

    Grace Su

    6 Ocak 2006
  • KIT KAT

    KIT KAT

    3 EKİM 2005
  • RomanAtwood

    RomanAtwood

    18 Kasım 2009