Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/162.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 迭代器引用受控序列中的元素的要求_C++_Std - Fatal编程技术网

C++ 迭代器引用受控序列中的元素的要求

C++ 迭代器引用受控序列中的元素的要求,c++,std,C++,Std,最近,我想知道当使用迭代器调用时,修改序列容器操作(例如,insert,erase)的行为,迭代器引用的元素不受调用其成员函数的容器的控制 int main() { std::vector<int> a = {1,2,3}, b = {1,2,3}; a.erase(b.begin()); } intmain(){ 向量a={1,2,3},b={1,2,3}; a、 擦除(b.begin()); } 我知道这会导致未定义的行为,但标准究竟禁止了哪些行为 (Dinkumwa

最近,我想知道当使用迭代器调用时,修改序列容器操作(例如,
insert
erase
)的行为,迭代器引用的元素不受调用其成员函数的容器的控制

int main() {
  std::vector<int> a = {1,2,3}, b = {1,2,3};
  a.erase(b.begin());
}
intmain(){
向量a={1,2,3},b={1,2,3};
a、 擦除(b.begin());
}
我知道这会导致未定义的行为,但标准究竟禁止了哪些行为

(Dinkumware文档中使用了“受控”术语,一些
valarray
操作的标准中也使用了“受控”术语,尽管我在常规序列容器中找不到它。)

它不是直接禁止的,只是没有任何定义的行为-因此

在C++11标准中,此序列容器操作在表100中定义,其中
a.erase(q)
的先决条件为

q
表示对
a

如果不是,则该操作无效。

它不是直接禁止的,只是没有任何定义的行为-因此

在C++11标准中,此序列容器操作在表100中定义,其中
a.erase(q)
的先决条件为

q
表示对
a


如果不是,则操作无效。

我查看了N3337中的同一个表,但找不到报价。它隐藏在23.2.3/3中。我查看了N3337中的同一个表,但找不到引用。它在23.2.3/3中隐藏得很好。