根据一些STL文件,我发现、插入或删除了下列内容:清单不会使清单失效。 也就是说,允许在一份清单(从begin(
)到end(<>>/code>>)上登记,然后添加使用推介的成分。
例如,在以下法典中,我先提出一个包含要素(a、b和c)的清单,然后将清单交给它处理,并对内容进行推论。 其结果应是ba巴布,这正是我得到的:
std::list<std::string> testList;
testList.push_back("a");
testList.push_back("b");
testList.push_back("c");
for (std::list<std::string>::iterator itList = testList.begin(); itList != testList.end(); ++itList)
testList.push_front(*itList);
for (std::list<std::string>::const_iterator itList = testList.begin(); itList != testList.end(); ++itList)
std::cout << *itList << std::endl;
当我使用逆向导器(从rbegin(
)到rend(<>/code>)并使用推回机时,我将期望类似行为,即诱发诱发的结果。 然而,我取得了不同的结果:
std::list<std::string> testList;
testList.push_back("a");
testList.push_back("b");
testList.push_back("c");
for (std::list<std::string>::reverse_iterator itList = testList.rbegin(); itList != testList.rend(); ++itList)
testList.push_back(*itList);
for (std::list<std::string>::const_iterator itList = testList.begin(); itList != testList.end(); ++itList)
std::cout << *itList << std::endl;
其结果不是abccba
,而是abcccba
。 添加了一条。
它看起来像首批推回一样,也改变了以暴发为先发制人的价值。 在推回之后,它不再指名单上第3个要素(以前是最后一个要素),而是指第4个要素(现在是最后一个要素)。
我通过“2010年视觉演播室”和“海湾合作委员会”测试了这一结果,两者都回报了同样的结果。
Is this an error? Or some strange behavior of reverse iterators that I m not aware of?