我写这个小代码只是为了看看迭代器实际上是如何失效的,并且不会在达到其容量后指向向量的更改位置。
这里,向量和容量的大小最初都是5。在那之后,我在vector中插入了一些其他元素,并且没有重新初始化我的迭代器以指向myvector.begin()。当再次打印向量的元素时,这会导致在maximum size of vector is : 1073741823之后的输出中出现垃圾值49。
在使用luabind返回stl::vector::iterator到lua脚本时,我遇到了一个奇怪的问题。luabind::module(L) luabind::def("get_car_list", &get_car_list, luabind::return_stl_iterator)[];function t
当我研究不同STL对象和函数的标准时,我不明白为什么容器对象的begin()和end()函数要按值返回迭代器,而不是按常量引用返回迭代器?在我看来,迭代器可以由容器对象内部持有,并在容器发生变化时进行调整。这将减少在for循环中创建不必要的临时文件的成本:
for (std::vector<int>::iterator it=my_vec.begin(); it!=my_vec.end(