У меня есть следующая простая программа:
#include <iostream>
#include <set>
using namespace std;
int main()
{
unsigned int qwer = 6132;
unsigned int ty = 3512;
unsigned int vv = 4331;
unsigned int gg = 1337;
set<unsigned int> asdf = {};
asdf.insert(qwer);
asdf.insert(ty);
asdf.insert(vv);
asdf.insert(gg);
cout << "&asdf.begin() = " << &asdf.begin();
unsigned int setint = *asdf.begin();
cout << "\nsetint = " << setint;
setint = *asdf.end();
cout << "\nsetint = " << setint;
cout << "\n&asdf.end() = " << &asdf.end();
return 0;
}
Она выводит следующее:
&asdf.begin() = 0x22fe08
setint = 1337
setint = 4
&asdf.end() = 0x22fe08
Почему совпадают адреса asdf.begin()
и asdf.end()
?Я предполагаю, что у них будут разные адреса, указывающие на разные значения?И хотя их адреса совпадают, указанные значения не совпадают!Почему это так?
РЕДАКТИРОВАТЬ: Кроме того, почему setint = asdf.end () появляется, чтобы установить значение setint на количество элементов в наборе, а не последнее значение в наборе?(Я предполагаю, что это должно быть 6132 верно?)