2016-04-08 36 views
-4

Birisinin boş bir vektöre sahip olması, ancak başlangıç ​​ve bitiş iteratoslarının aynı olmadığının deneyimlenip deneyimlemediğini merak ediyorum.Empty std :: vector begin! = End

Teşekkürler

+1

Garip eşit olmalıdır ... soruyu haklı bir kod örneği var mı? – blazs

+1

Göz önünde bulundurulduğunda, 'begin()' için bir boş 'std :: vektörü 'için' end()' değerine eşit olma zorunluluğu vardır, birinin bunu daha önce gözlemlediğinden şüphe duyuyorum. C++ ya da uyumlu bir C++ uygulaması hakkında konuşmuyorsak. Bu durumda hangi derleyici ve platform kullanıyorsunuz? – IInspectable

+0

Bunu anımsamak gibi görünüyor, ama bu "STL" şey yeni ve muhtemelen, ortak olduğu zaman muhtemelen en az 20 yıl önce (belki daha fazla) oldu. –

cevap

3

Bu mümkün olmamalıdır./6

begin() [container.requirements.general] standart durumları kabın ilk eleman atıfta bir yineleyici döndürür. end(), öğesinin kapsayıcının son değeri olduğu bir yineleyici döndürür. Kap daha sonra, boş ise begin() == end();

yüzden contianer.empty() == true o zaman container.begin()container.end()

+0

Standartların ne söylediğini biliyorum ama lütfen daha açık fikirli olun ve bunu doğa yasaları olarak kabul etmeyin. Böyle durumlarda olabilir ve ben sadece birisi –

+1

açık fikirli olsaydı ben wandering Ben sadece olamaz standardına göre bildiriyorum. Eğer varsa, uygulamanızda bir hata var ve düzeltilmesi gerekiyor. – NathanOliver

+1

@IrakliDarbuashvili: Bunlar kurallar, ve onlarla buluşamayan tek bir güncel C++ uygulamasını bilmiyorum. Sağladığınızı ve MCVE'un bir şekilde gizli bilgi verdiğine inandığınız için, daha deneyimli olmamanız, sizin gözlemlediğiniz şeyin kodunuzdaki bir hata veya gözlemlerinizin yanlış yorumlanması olduğuna inanıyorum. – IInspectable