イテレーション
イテレーションとは?
:反復器は、コンテナ内の要素を巡回できるポインタなどのオブジェクトです.
begin()関数とend()関数を使用して、コンテナ内の要素を巡回できます.
重複するアイテムを取得するための関数です.
begin()関数
:名前の通り、容器の最初の要素を指します.
end()関数
:最後の要素の後ろを指します.
:end()は最後の要素ではなく、最後の要素の後のセルの要素を指す理由
君のことを言っているのではないか.
=>(回答)空の容器を表します.
(説明)end()が最後の要素を指す場合、begin()とend()は同じ場所を指す.
また、要素を追加すると、begin()とend()も同じ場所を指します.
これは空ベクトルを表現できないためだと思います.
end()を最後の要素の後ろに配置することによって、1つの要素が存在しない場合、begin()=end()は空で表されます.1つの要素が入ると、beginは1つの要素を指し、endは1つの要素の後ろを指し、空の要素と1つの要素に入ることを区別できます.
:驚くべきことにv.begin()のアドレスとサイズですが、いずれにしてもiterator値はポインタです.
すなわち,指し示す箇所の番号を+1(すなわちサイズ+4)増やしながらコンテナ要素を巡回する.
->それを通して...難しそうです.
#include <string>
#include <iostream>
#include <vector>
using namespace std;
int main() {
vector<int> v;
v.push_back(1);
v.push_back(2);
v.push_back(3);
v.push_back(4);
v.push_back(5);
v.push_back(6);
cout << "vector 의 주소값 : " << &v << endl;
cout << "vector[0] 의 주소값 : " << &v[0] << endl << endl;
cout << "vector[1] 의 주소값 : " << &v[1] << endl << endl;
cout << "vector[2] 의 주소값 : " << &v[2] << endl << endl;
cout << "vector.begin()의 크기 :" << sizeof(v.begin()) << endl;
cout << "vector.begin()의 주소값 :" << &(v.begin()) << endl;
cout << "vector.begin() + 1의 주소값 :" << &(v.begin() + 1) << endl;
cout << "vector.end()의 주소값 : " << &(v.end()) << endl;
cout << endl;
vector<int>::iterator i;
i = v.begin();
cout << "이터레이터 i의 주소값 : " << &i << ", value : " << *i
<< ", 이터레이터가 가리키는 곳의 주소값은 : " << &(*i) << endl;
i++;
cout << "이터레이터 + 1 증가시킴" << endl;
cout << "이터레이터 i의 주소값 : " << &i << ", value : " << *i
<< ", 이터레이터가 가리키는 곳의 주소값은 : " << &(*i) << endl;
system("pause");
return 0;
}
Reference
この問題について(イテレーション), 我々は、より多くの情報をここで見つけました https://velog.io/@kwt0124/이터레이터テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol