end()
の標準ライブラリ実装では、それを取得できるだけでなく、過去の値を設定することができます。これはなぜ許可されていますか?潜在的に問題につながることはありませんか?std :: vectorのend()を設定するのはなぜですか?
#include <vector>
#include <iostream>
int main(void)
{
std::vector<int> v;
v.push_back(1);
v.push_back(2);
v.push_back(3);
*v.end() = 2; // why am I allowed to do this?
std::cout << *v.end() << std::endl;
return 0;
}
「許可」を定義します。 – immibis
これを読む:[未定義の動作とは何ですか?](https://en.wikipedia.org/wiki/Undefined_behavior)あなたがそれを呼び出すので、それに慣れてください。 – WhozCraig