Aracılığıyla paylaş


<iterator> işlevleri

advance

Belirtilen bir konum sayısıyla yineleyiciyi artırır.

template <class InputIterator, class Distance>
void advance(InputIterator& InIt, Distance Off);

Parametreler

InIt
Artırılacak ve bir girişi yineleyicisinin gereksinimleri karşılaması gereken yineleyici.

Off
Yineleyicinin fark türüne dönüştürülebilir ve yineleyici konumunun yükseltileceği artış sayısını belirten integral türü.

Açıklamalar

Aralık, yineleyicilerin başvurulmaz veya ucu geçmiş olması gereken nonsingular olmalıdır.

InputIterator çift yönlü yineleyici türü gereksinimlerini karşılıyorsa, Off negatif olabilir. Giriş veya iletilen yineleyici türüyse InputIterator , Off zorunlu olmamalıdır.

Advance işlevi, rastgele erişim yineleyicisinin gereksinimlerini karşıladığında InputIterator sabit karmaşıklığa sahiptir; aksi takdirde doğrusal karmaşıklığa sahiptir ve bu da potansiyel olarak pahalıdır.

Örnek

// iterator_advance.cpp
// compile with: /EHsc
#include <iterator>
#include <list>
#include <iostream>

int main()
{
    using namespace std;

    list<int> L;
    for (int i = 1; i < 9; ++i)
    {
        L.push_back(i);
    }
    list<int>::iterator LPOS = L.begin();

    cout << "The list L is: ( ";
    for (auto L_Iter = L.begin(); L_Iter != L.end(); L_Iter++)
    {
        cout << *L_Iter << " ";
    }
    cout << ")." << endl;

    cout << "The iterator LPOS initially points to the first element: "
        << *LPOS << "." << endl;

    advance(LPOS, 4);
    cout << "LPOS is advanced 4 steps forward to point"
        << " to the fifth element: "
        << *LPOS << "." << endl;

    advance(LPOS, -3);
    cout << "LPOS is moved 3 steps back to point to the "
        << "2nd element: " << *LPOS << "." << endl;
}
The list L is: ( 1 2 3 4 5 6 7 8 ).
The iterator LPOS initially points to the first element: 1.
LPOS is advanced 4 steps forward to point to the fifth element: 5.
LPOS is moved 3 steps back to point to the 2nd element: 2.

back_inserter

Belirtilen kapsayıcının arkasında öğeler ekleyebilen bir yineleyici oluşturur.

template <class Container>
back_insert_iterator<Container> back_inserter(Container& Cont);

Parametreler

Cont
Geri eklemenin yürütülacağı kapsayıcı.

Dönüş Değeri

back_insert_iterator kapsayıcı nesnesiyle Contilişkilendirilmiş.

Açıklamalar

C++ Standart Kitaplığı'nın içinde bağımsız değişken, üye işlevine push_backsahip üç sıralı kapsayıcıdan birine başvurmalıdır:deque Sınıf, list Sınıf veya vector Sınıf.

Örnek

// iterator_back_inserter.cpp
// compile with: /EHsc
#include <iterator>
#include <vector>
#include <iostream>

int main()
{
    using namespace std;

    vector<int> vec;
    for (int i = 0; i < 3; ++i)
    {
        vec.push_back(i);
    }

    cout << "The initial vector vec is: ( ";
    for (auto vIter = vec.begin(); vIter != vec.end(); vIter++)
    {
        cout << *vIter << " ";
    }
    cout << ")." << endl;

    // Insertions can be done with template function
    back_insert_iterator<vector<int> > backiter(vec);
    *backiter = 30;
    backiter++;
    *backiter = 40;

    // Alternatively, insertions can be done with the
    // back_insert_iterator member function
    back_inserter(vec) = 500;
    back_inserter(vec) = 600;

    cout << "After the insertions, the vector vec is: ( ";
    for (auto vIter = vec.begin(); vIter != vec.end(); vIter++)
    {
        cout << *vIter << " ";
    }
    cout << ")." << endl;
}
The initial vector vec is: ( 0 1 2 ).
After the insertions, the vector vec is: ( 0 1 2 30 40 500 600 ).

begin

Belirtilen bir kapsayıcıdaki ilk öğe için bir yineleyici alır.

template <class Container>
auto begin(Container& cont)  `
   -> decltype(cont.begin());

template <class Container>
auto begin(const Container& cont)   `
   -> decltype(cont.begin());

template <class Ty, class Size>
Ty *begin(Ty (& array)[Size]);

Parametreler

cont
Bir kapsayıcı.

array
türünde Tybir nesne dizisi.

Dönüş Değeri

İlk iki şablon işlevi döndürür cont.begin(). Birinci işlev sabit değil; ikinci sabittir.

Üçüncü şablon işlevi döndürür array.

Örnek

Daha genel bir davranış gerektiğinde kapsayıcı üyesi begin() yerine bu şablon işlevini kullanmanızı öneririz.

// cl.exe /EHsc /nologo /W4 /MTd
#include <algorithm>
#include <functional>
#include <iostream>
#include <iterator>
#include <vector>

template <typename C> void reverse_sort(C& c)
{
    std::sort(std::begin(c), std::end(c), std::greater<>());
}

template <typename C> void print(const C& c)
{
    for (const auto& e : c)
    {
        std::cout << e << " ";
    }
    std::cout << "\n";
}

int main() 
{
    std::vector<int> v = { 11, 34, 17, 52, 26, 13, 40, 20, 10, 5, 16, 8, 4, 2, 1 };

    print(v);
    reverse_sort(v);
    print(v);

    std::cout << "--\n";

    int arr[] = { 23, 70, 35, 106, 53, 160, 80, 40, 20, 10, 5, 16, 8, 4, 2, 1 };

    print(arr);
    reverse_sort(arr);
    print(arr);
}
11 34 17 52 26 13 40 20 10 5 16 8 4 2 1
52 40 34 26 20 17 16 13 11 10 8 5 4 2 1
--
23 70 35 106 53 160 80 40 20 10 5 16 8 4 2 1
160 106 80 70 53 40 35 23 20 16 10 8 5 4 2 1

işlevi reverse_sort , üyesi olmayan sürümünü çağırdığı için normal dizilere ek olarak her türden kapsayıcıyı begin()destekler. Kapsayıcı üyesini begin()kullanmak için kodlamareverse_sort:

template <typename C>
void reverse_sort(C& c) {
    using std::begin;
    using std::end;

    std::sort(c.begin(), c.end(), std::greater<>());

}

Ardından bir dizi göndererek bu derleyici hatasına neden olur:

error C2228: left of '.begin' must have class/struct/union

cbegin

Belirtilen kapsayıcıdaki ilk öğeye sabit (salt okunur) bir yineleyici alır.

template <class Container>
auto cbegin(const Container& cont)
   -> decltype(cont.begin());

Parametreler

cont
Bir kapsayıcı veya initializer_list.

Dönüş Değeri

Sabit cont.begin().

Açıklamalar

Bu işlev tüm C++ Standart Kitaplığı kapsayıcılarıyla ve ile initializer_listçalışır.

Dönüş değerinin olduğunu const_iteratorgaranti etmek için şablon işlevinin begin() yerine bu üye işlevini kullanabilirsiniz. Genellikle, aşağıdaki örnekte gösterildiği gibi tür kesinti anahtar sözcüğüyle auto birlikte kullanılır. Örnekte, değiştirilebilir (non- const) kapsayıcısı veya initializer_list ve cbegin()destekleyen begin() herhangi bir tür olduğunu düşününContainer.

auto i1 = Container.begin();
// i1 is Container<T>::iterator
auto i2 = Container.cbegin();

// i2 is Container<T>::const_iterator

cend

Belirtilen kapsayıcıdaki son öğeyi izleyen öğeye bir const (salt okunur) yineleyici alır.

template <class Container>
auto cend(const Container& cont)
   -> decltype(cont.end());

Parametreler

cont
Bir kapsayıcı veya initializer_list.

Dönüş Değeri

Sabit cont.end().

Açıklamalar

Bu işlev tüm C++ Standart Kitaplığı kapsayıcılarıyla ve ile initializer_listçalışır.

Dönüş değerinin olduğunu const_iteratorgaranti etmek için şablon işlevinin end() yerine bu üye işlevini kullanabilirsiniz. Genellikle, aşağıdaki örnekte gösterildiği gibi tür kesinti anahtar sözcüğüyle auto birlikte kullanılır. Örnekte, değiştirilebilir (non- const) kapsayıcısı veya initializer_list ve cend()destekleyen end() herhangi bir tür olduğunu düşününContainer.

auto i1 = Container.end();
// i1 is Container<T>::iterator
auto i2 = Container.cend();

// i2 is Container<T>::const_iterator

crbegin

Kapsayıcının sonundan başlayarak kapsayıcının öğelerine ters salt okunur bir yineleyici alın.

template <class C> constexpr auto crbegin(const C& c) -> decltype(std::rbegin(c));

Parametreler

C
Kapsayıcının türü.

c
Kapsayıcı örneği.

Dönüş değeri

Bu yineleyici kapsayıcının sonundan başlayarak kapsayıcının öğelerini ters sırada döndürür.

10, 20 ve 30 öğelerini içeren bir vektör resmi. En soldaki öğeden (en soldaki öğe 10 sayısını içerir) önce sentinel öğesini temsil eden bir sanal kutu vardır. Crend() olarak etiketlenmiştir. Vektördeki ilk öğe 10 sayısını içerir ve 'son öğe' olarak etiketlenmiştir. Vektördeki en sağdaki öğe 30 içerir ve crbegin() olarak etiketlenmiştir.

Örnek: crbegin

#include <vector>
#include <iostream>

int main()
{
    std::vector<int> v{10, 20, 30};
    for (auto i = std::crbegin(v); i != std::crend(v); ++i)
    {
        std::cout << *i << ' '; // outputs 30 20 10
    }
    // v[1] = 100; // error because the iterator is const
}
30 20 10

crend

Salt okunur ters çevrilmiş öğe dizisinin sonunda sentinel'i alın.

template <class C> constexpr auto crend(const C& c) -> decltype(std::rend(c));

Parametreler

C
Kapsayıcının türü.

c
Kapsayıcı örneği.

Dönüş değeri

Sentinel, kapsayıcının ters çevrilmiş görünümündeki son öğeyi izler.

10, 20 ve 30 öğelerini içeren bir vektör resmi. En soldaki öğeden (en soldaki öğe 10 sayısını içerir) önce sentinel öğesini temsil eden bir sanal kutu vardır. Crend() olarak etiketlenmiştir. Vektördeki ilk öğe 10 sayısını içerir ve 'son öğe' olarak etiketlenmiştir. Vektördeki en sağdaki öğe 30 içerir ve crbegin() olarak etiketlenmiştir.

crend örnek

#include <vector>
#include <iostream>

int main()
{
    std::vector<int> v{10, 20, 30};
    auto vi = std::crend(v);
    --vi; // get off the sentinel and onto the last element in the reversed range
    std::cout << *vi; // outputs 10
    // vi[0] = 300; // error because the iterator is const
}
10

data

Kapsayıcıdaki ilk öğeye bir işaretçi alın.

1) template <class C> constexpr auto data(C& c) -> decltype(c.data());
2) template <class C> constexpr auto data(const C& c) -> decltype(c.data());
3) template <class T, size_t N> constexpr T* data(T (&array)[N]) noexcept;
4) template <class E> constexpr const E* data(initializer_list<E> il) noexcept;

Parametreler

C
Kapsayıcının türü.

c
Kapsayıcı örneği.

E
Başlatıcı listesinin öğe türü.

il
Başlatıcı listesi.

N
Dizideki öğelerin sayısı

T
Dizideki verilerin türü.

Dönüş değeri

1, 2) Kapsayıcının türüne bağlı olarak ilk öğeye yönelik bir işaretçi. Örneğin, kapsayıcı tamsayılardan oluşan bir vektörse, dönüş değerinin türü bir int *olur.

3) dizi olarak ilk öğeye yönelik bir işaretçi.

4) Başlatıcı listesinin ilk öğesinin işaretçisi.

Örnek data

#include <vector>
#include <iostream>

int main()
{
    std::vector<int> v{ 10, 20, 30 };
    std::string src{ "a string" };

    const char *charPtr = std::data(src);
    int* intPtr = std::data(v);
    std::cout << charPtr << ", " << *intPtr << '\n'; // a string, 10
}
a string, 10

distance

İki yineleyici tarafından ele alınan konumlar arasındaki artış sayısını belirler.

template <class InputIterator>
typename iterator_traits<InputIterator>::difference_type distance(InputIterator first, InputIterator last);

Parametreler

first
İkinciye olan uzaklığı belirlenecek olan ilk yineleyici.

last
birinciden uzaklığı belirlenecek ikinci yineleyici.

Dönüş Değeri

değerine eşit olana kadar artırılması gereken sayıdır first last.

Açıklamalar

Uzaklık işlevi, rastgele erişim yineleyicisinin gereksinimlerini karşıladığında InputIterator sabit karmaşıklığa sahiptir; aksi takdirde doğrusal karmaşıklığa sahiptir ve bu da potansiyel olarak pahalıdır.

Örnek

// iterator_distance.cpp
// compile with: /EHsc
#include <iterator>
#include <list>
#include <iostream>

int main()
{
    using namespace std;

    list<int> L;
    for (int i = -1; i < 9; ++i)
    {
        L.push_back(2 * i);
    }
    list <int>::iterator L_Iter, LPOS = L.begin();

    cout << "The list L is: ( ";
    for (L_Iter = L.begin(); L_Iter != L.end(); L_Iter++)
    {
        cout << *L_Iter << " ";
    }
    cout << ")." << endl;

    cout << "The iterator LPOS initially points to the first element: "
         << *LPOS << "." << endl;

    advance(LPOS, 7);
    cout << "LPOS is advanced 7 steps forward to point "
        << " to the eighth element: "
        << *LPOS << "." << endl;

    list<int>::difference_type Ldiff;
    Ldiff = distance(L.begin(), LPOS);
    cout << "The distance from L.begin( ) to LPOS is: "
        << Ldiff << "." << endl;
}
The list L is: ( -2 0 2 4 6 8 10 12 14 16 ).
The iterator LPOS initially points to the first element: -2.
LPOS is advanced 7 steps forward to point  to the eighth element: 12.
The distance from L.begin( ) to LPOS is: 7.

empty

template <class C> constexpr auto empty(const C& c) -> decltype(c.empty());
template <class T, size_t N> constexpr bool empty(const T (&array)[N]) noexcept;
template <class E> constexpr bool empty(initializer_list<E> il) noexcept;

Parametreler

C
Kapsayıcının türü.

c
Kapsayıcı örneği.

E
Başlatıcı listesinin öğe türü.

il
Başlatıcı listesi.

N
Dizideki öğelerin sayısı

T
Dizideki verilerin türü.

Dönüş değeri

Kapsayıcıda öğe yoksa döndürür true ; aksi takdirde falsedöndürür.

Örnek

#include <vector>
#include <iostream>

int main()
{
    std::vector<int> v{ 10,20,30 };
    std::vector<int> v2;

    std::cout << std::boolalpha << std::empty(v); // outputs false
    std::cout << std::boolalpha << ", " << std::empty(v2); // outputs true
}
false, true

end

Belirtilen kapsayıcıdaki son öğeyi izleyen öğeye bir yineleyici alır.

template <class Container>
auto end(Container& cont)
   -> decltype(cont.end());

template <class Container>
auto end(const Container& cont)
   -> decltype(cont.end());

template <class Ty, class Size>
Ty *end(Ty (& array)[Size]);

Parametreler

cont
Bir kapsayıcı.

array
türünde Tybir nesne dizisi.

Dönüş Değeri

İlk iki şablon işlevi döndürür cont.end() (birincisi sabit olmayan, ikincisi sabittir).

Üçüncü şablon işlevi döndürür array + Size.

Açıklamalar

Kod örneği için bkz begin. .

front_inserter

Belirtilen kapsayıcının önünde öğeler ekleyebilen bir yineleyici oluşturur.

template <class Container>
front_insert_iterator<Container> front_inserter(Container& Cont);

Parametreler

Cont
Ön öğesi eklenmiş olan kapsayıcı nesnesi.

Dönüş Değeri

front_insert_iterator kapsayıcı nesnesiyle Contilişkilendirilmiş.

Açıklamalar

front_insert_iterator sınıfının üye işlevi front_insert_iterator de kullanılabilir.

C++ Standart Kitaplığı'nın içinde bağımsız değişken üye işlevine push_backsahip iki sıralı kapsayıcıdan birine başvurmalıdır: deque Class veya "list Class".

Örnek

// iterator_front_inserter.cpp
// compile with: /EHsc
#include <iterator>
#include <list>
#include <iostream>

int main()
{
    using namespace std;

    list<int> L;
    for (int i = -1; i < 9; ++i)
    {
        L.push_back(i);
    }

    cout << "The list L is:\n ( ";
    for (auto L_Iter = L.begin(); L_Iter != L.end(); L_Iter++)
    {
        cout << *L_Iter << " ";
    }
    cout << ")." << endl;

    // Using the template function to insert an element
    front_insert_iterator<list <int>> Iter(L);
    *Iter = 100;

    // Alternatively, you may use the front_insert member function
    front_inserter(L) = 200;

    cout << "After the front insertions, the list L is:\n ( ";
    for (auto L_Iter = L.begin(); L_Iter != L.end(); L_Iter++)
    {
        cout << *L_Iter << " ";
    }
    cout << ")." << endl;
}
The list L is:
( -1 0 1 2 3 4 5 6 7 8 ).
After the front insertions, the list L is:
( 200 100 -1 0 1 2 3 4 5 6 7 8 ).

inserter

yerine insert_iterator<Container>(Cont, Where)kullanmanıza inserter(Cont, Where) olanak tanıyan yardımcı şablon işlevi.

template <class Container>
insert_iterator<Container>
inserter(
    Container& Cont,
    typename Container::iterator Where);

Parametreler

Cont
Yeni öğelerin eklendiği kapsayıcı.

Where
Ekleme noktasını buan bir yineleyici.

Açıklamalar

Şablon işlevi döndürür insert_iterator<Container>(Cont, Where).

Örnek

// iterator_inserter.cpp
// compile with: /EHsc
#include <iterator>
#include <list>
#include <iostream>

int main()
{
    using namespace std;

    list<int> L;
    for (int i = 2; i < 5; ++i)
    {
        L.push_back(10 * i);
    }

    cout << "The list L is:\n ( ";
    for (auto L_Iter = L.begin(); L_Iter != L.end(); L_Iter++)
    {
        cout << *L_Iter << " ";
    }
    cout << ")." << endl;

    // Using the template version to insert an element
    insert_iterator<list<int>> Iter(L, L.begin());
    *Iter = 1;

    // Alternatively, using the member function to insert an element
    inserter(L, L.end()) = 500;

    cout << "After the insertions, the list L is:\n ( ";
    for (auto L_Iter = L.begin(); L_Iter != L.end(); L_Iter++)
    {
        cout << *L_Iter << " ";
    }
    cout << ")." << endl;
}
The list L is:
( 20 30 40 ).
After the insertions, the list L is:
( 1 20 30 40 500 ).

make_checked_array_iterator

Diğer algoritmalar tarafından kullanılabilecek bir checked_array_iterator oluşturur.

Not

Bu işlev, C++ Standart Kitaplığı'nın bir Microsoft uzantısıdır. Bu işlev kullanılarak uygulanan kod bu Microsoft uzantısını desteklemeyen C++ Standart yapı ortamları için taşınabilir değildir.

template <class Iter>
checked_array_iterator<Iter>
    make_checked_array_iterator(
Iter Ptr,
    size_t Size,
    size_t Index = 0);

Parametreler

Ptr
Hedef dizi için işaretçi.

Size
Hedef dizinin boyutu.

Index
Diziye isteğe bağlı dizin.

Dönüş Değeri

checked_array_iterator öğesinin bir örneği.

Açıklamalar

make_checked_array_iterator İşlev ad alanında stdext tanımlanır.

Bu işlev normalde sınırların taşması konusunda endişeye neden olan bir ham işaretçi alır ve denetimi yapan bir checked_array_iterator sınıfına sarmalar. Bu sınıf işaretli olarak işaretlendiğinden, C++ Standart Kitaplığı bu konuda uyarı vermez. Daha fazla bilgi ve kod örnekleri için bkz . İşaretli Yineleyiciler.

Örnek

Aşağıdaki örnekte bir vektör oluşturulur ve 10 öğeyle doldurulur. Vektör içeriği kopyalama algoritması kullanılarak bir diziye kopyalanır ve ardından make_checked_array_iterator hedefi belirtmek için kullanılır. Bunun ardından sınırların denetiminin bilerek ihlali gelir, böylece bir hata ayıklama onaylama işlemi hatası tetiklenir.

// make_checked_array_iterator.cpp
// compile with: /EHsc /W4 /MTd

#include <algorithm>
#include <iterator> // stdext::make_checked_array_iterator
#include <memory> // std::make_unique
#include <iostream>
#include <vector>
#include <string>

using namespace std;

template <typename C> void print(const string& s, const C& c)
{
    cout << s;

    for (const auto& e : c) 
    {
        cout << e << " ";
    }

    cout << endl;
}

int main()
{
    const size_t dest_size = 10;
    // Old-school but not exception safe, favor make_unique<int[]>
    // int* dest = new int[dest_size];
    unique_ptr<int[]> updest = make_unique<int[]>(dest_size);
    int* dest = updest.get(); // get a raw pointer for the demo

    vector<int> v;

    for (int i = 0; i < dest_size; ++i) 
    {
        v.push_back(i);
    }
    print("vector v: ", v);

    copy(v.begin(), v.end(), stdext::make_checked_array_iterator(dest, dest_size));

    cout << "int array dest: ";
    for (int i = 0; i < dest_size; ++i)
    {
        cout << dest[i] << " ";
    }
    cout << endl;

    // Add another element to the vector to force an overrun.
    v.push_back(10);

    // ! The next line causes a debug assertion when it executes.
    copy(v.begin(), v.end(), stdext::make_checked_array_iterator(dest, dest_size));
}

make_move_iterator

Sağlanan yineleyiciyi yineleyici olarak stored içeren bir move iterator oluşturur.

template <class Iterator>
move_iterator<Iterator>
make_move_iterator(const Iterator& It);

Parametreler

It
Yeni taşıma yineleyicisinde depolanan yineleyici.

Açıklamalar

Şablon işlevi döndürür move_iterator <Iterator>(_It).

make_unchecked_array_iterator

Diğer algoritmalar tarafından kullanılabilecek bir unchecked_array_iterator oluşturur.

Not

Bu işlev, C++ Standart Kitaplığı'nın bir Microsoft uzantısıdır. Bu işlev kullanılarak uygulanan kod bu Microsoft uzantısını desteklemeyen C++ Standart yapı ortamları için taşınabilir değildir.

template <class Iter>
unchecked_array_iterator<Iter>
    make_unchecked_array_iterator(Iter Ptr);

Parametreler

Ptr
Hedef dizi için işaretçi.

Dönüş Değeri

unchecked_array_iterator öğesinin bir örneği.

Açıklamalar

make_unchecked_array_iterator İşlev ad alanında stdext tanımlanır.

Bu işlev ham bir işaretçi alır ve hiçbir denetim gerçekleştirmez ve bu nedenle hiçbir şey için iyileştirir, ancak C4996 gibi derleyici uyarılarını da sessize alır. Bu nedenle, denetlenmemiş işaretçi uyarılarıyla onları genel olarak susturmadan veya denetleme maliyeti oluşturmadan baş etmek için hedeflenmiş bir yoldur. Daha fazla bilgi ve kod örnekleri için bkz . İşaretli Yineleyiciler.

Örnek

Aşağıdaki örnekte bir vektör oluşturulur ve 10 öğeyle doldurulur. Vektör içeriği kopyalama algoritması kullanılarak bir diziye kopyalanır ve ardından make_unchecked_array_iterator hedefi belirtmek için kullanılır.

// make_unchecked_array_iterator.cpp
// compile with: /EHsc /W4 /MTd

#include <algorithm>
#include <iterator> // stdext::make_unchecked_array_iterator
#include <iostream>
#include <vector>
#include <string>

using namespace std;

template <typename C> void print(const string& s, const C& c)
{
    cout << s;

    for (const auto& e : c) 
    {
        cout << e << " ";
    }

    cout << endl;
}

int main()
{
    const size_t dest_size = 10;
    int* dest = new int[dest_size];
    vector<int> v;

    for (int i = 0; i < dest_size; ++i) 
    {
        v.push_back(i);
    }
    print("vector v: ", v);

    // COMPILER WARNING SILENCED: stdext::unchecked_array_iterator is marked as checked in debug mode
    // (it performs no checking, so an overrun will trigger undefined behavior)
    copy(v.begin(), v.end(), stdext::make_unchecked_array_iterator(dest));

    cout << "int array dest: ";
    for (int i = 0; i < dest_size; ++i)
    {
        cout << dest[i] << " ";
    }
    cout << endl;

    delete[] dest;
}
vector v: 0 1 2 3 4 5 6 7 8 9
int array dest: 0 1 2 3 4 5 6 7 8 9

next

Belirtilen sayıda yineler ve yeni yineleyici konumunu döndürür.

template <class InputIterator>
InputIterator next(
    InputIterator first,
    typename iterator_traits<InputIterator>::difference_type off = 1);

Parametreler

first
Geçerli konum.

off
Yineleme sayısı.

Dönüş Değeri

Yineleme sürelerinin ardından off yeni yineleyici konumunu döndürür.

Açıklamalar

Şablon işlevi artımlı off süreler döndürür next

prev

Belirtilen sayıda geri yineler ve yeni yineleyici konumunu döndürür.

template <class BidirectionalIterator>
BidirectionalIterator prev(
    BidirectionalIterator first,
    typename iterator_traits<BidirectionalIterator>::difference_type off = 1);

Parametreler

first
Geçerli konum.

off
Yineleme sayısı.

Açıklamalar

Şablon işlevi azalan off süreler döndürürnext.

rbegin

Kapsayıcının öğelerini ters sırada döndüren bir yineleyici alın.

template <class C> constexpr auto rbegin(C& c) -> decltype(c.rbegin());
template <class C> constexpr auto rbegin(const C& c) -> decltype(c.rbegin());

Parametreler

C
Kapsayıcının türü.

c
Kapsayıcı örneği.

Dönüş değeri

Döndürülen yineleyici, ters çevrilmiş aralığın sonundan başlayarak kapsayıcının öğelerini ters sırada sunar.

10, 20 ve 30 öğelerini içeren bir vektör resmi. En soldaki öğeden (en soldaki öğe 10 sayısını içerir) önce sentinel öğesini temsil eden bir sanal kutu vardır. Rend() olarak etiketlenmiştir. Vektördeki ilk öğe 10 sayısını içerir ve 'son öğe' olarak etiketlenmiştir. Vektördeki en sağdaki öğe 30 içerir ve rbegin() olarak etiketlenmiştir.

Örnek rbegin

#include <vector>
#include <iostream>

int main()
{
    std::vector<int> v{ 10, 20, 30 };

	for (auto e = std::rbegin(v); e != std::rend(v); ++e)
	{
		std::cout << *e << ' '; // outputs 30 20 10
	}
}
30 20 10

rend

Ters çevrilmiş öğe dizisinin sonunda sentinel'i alın.

template <class C> constexpr auto rend(C& c)-> decltype(c.rend());
template <class C> constexpr auto rend(const C& c) -> decltype(c.rend());

Parametreler

C
Kapsayıcının türü.

c
Kapsayıcı örneği.

Dönüş değeri

Kapsayıcının sonundaki sentinel için ters yineleyici. Sentinel, kapsayıcının ters çevrilmiş görünümündeki son öğeyi izler:

10, 20 ve 30 öğelerini içeren bir vektör resmi. En soldaki öğeden (en soldaki öğe 10 sayısını içerir) önce sentinel öğesini temsil eden bir sanal kutu vardır. Rend() olarak etiketlenmiştir. Vektördeki ilk öğe 10 sayısını içerir ve 'son öğe' olarak etiketlenmiştir. Vektördeki en sağdaki öğe 30 içerir ve rbegin() olarak etiketlenmiştir.

rend örnek

#include <vector>
#include <iostream>

int main()
{
    std::vector<int> v{10, 20, 30};
    auto vi = std::rend(v);
    --vi; // get off the sentinel and onto the last element in the reversed range
    std::cout << *vi; // outputs 10
}
10

size

template <class C> constexpr auto size(const C& c)
    -> decltype(c.size());
template <class T, size_t N> constexpr size_t size(const T (&array)[N]) noexcept;

Parametreler

C
Kapsayıcının türü.

c
Kapsayıcı örneği.

N
Dizideki öğelerin sayısı

T
Dizideki verilerin türü.

Dönüş değeri

Kapsayıcıdaki öğelerin işaretsiz tamsayı benzeri bir değer olarak sayısı.

Örnek size

#include <vector>
#include <iostream>

int main()
{
    std::vector<int> v{ 10, 20, 30 };
    size_t s = std::size(v);
    std::cout << s; // outputs 3
}
3