Sen std::vector<T>::size_type
kullanmalıdır. İmzasız integral tipi. Bu genelliklesize_t
ile aynıdır.
size_type
ve
size_t
arasındaki farkı bilmek için, bu konuya bakın:
1. Benzer şekilde, std::string::size_type
, std::list<T>::size_type
, std::deque<T>::size_type
, std::set<T>::size_type
, vb kullanabilirsiniz. Hemen hemen tüm standart kaplar, size_type
olarak adlandırılan yuvalanmış bir türü tanımlar.
biri yineleyici yerine endeksi kullanması gerektiğini iddia edebilir. Ama aynı zamanda bu bazen yineleyici For döngüsü yatay çok geniş, bu bkz yapar bkz: görünmüyor
for(std::vector<std::vector<std::string> >::iterator it = v.begin(); it != v.end(); ++it)
{
}
. Aslında bazen rahatsız ediyor. Bu gibi durumlarda, bazı programcılar dizini dizinini yineleyici üzerinden tercih ederler.
C++ 0x, yineleyici daha deyimsel hale getirilmiştir. Şimdi hantal sözdizimi yapmadan yineleyici kullanabilirsiniz: kullanarak,
for(auto it = v.begin(); it != v.end(); ++it)
{
}
Hatta daha da iyisi aralık tabanlı döngü: En int imzalanır çünkü derleyici uyarı verir
for(auto & item : v)
{
}
Dizinleri kullanmak yerine yineleyicileri kullanmayı düşünün. –