草庐IT

iteration

全部标签

c++ - 为什么迭代器在 VS2010 中导致调试非常缓慢,即使 _HAS_ITERATOR_DEBUGGING、_SECURE_SCL、_SECURE_SCL_THROWS 设置为 0

我一直试图找出为什么在Debug模式下调试我们的程序需要这么长时间。在使用xperf查看堆栈的样子后,很明显我们在迭代器和STL容器上花费了大量时间。我在谷歌上搜索了一会儿,找到了选项_HAS_ITERATOR_DEBUGGING=0_SECURE_SCL=0_SECURE_SCL_THROWS=0我用#define在代码中设置所有这些#define_HAS_ITERATOR_DEBUGGING0#define_SECURE_SCL0#define_SECURE_SCL_THROWS0但这似乎没有用,所以我尝试使用visualstudio项目中的预处理器定义,但似乎仍然没有帮助。我已经

c++ - std::multiset::iterator = NULL 不再有效?

我有一些代码正在使用gcc4.7(从3.1)更新到C++11我有一个multiset定义为一个类的私有(private)成员:multisetobjects_;代码中有一段看起来像这样(p_q是一对多集迭代器,对那句讨厌的行感到抱歉,迫不及待地想用auto替换它,哈哈):voidTerrain::removeObject(Object*obj){pair::iterator,multiset::iterator>p_q;multiset::iteratorp,q;q=NULL;p_q=objects_.equal_range(obj);for(p=p_q.first;p!=p_q.se

C++ - 将 istream_iterator 与 wstringstream 一起使用

我正在尝试为我编写的程序添加Unicode支持。我的ASCII代码已编译并具有以下几行:std::stringstreamstream("abc");std::istream_iteratorit(stream);我将其转换为:std::wstringstreamstream(L"abc");std::istream_iteratorit(stream);我在istream_iterator构造函数中得到以下错误:errorC2664:'voidstd::vector::push_back(std::basic_string&&)':cannotconvertparameter1fro

c++ - 从 std::ostream_iterator 调用时未找到运算符 << 的重载?

这个程序//main.cpp#include#include#include#include#includetemplatestd::ostream&operator&pair){returnos";}intmain(){std::mapmap={{1,2},{2,3}};std::cout>(std::cout,""));//thisdoesn'twork}产生错误nomatchfor‘operator>::ostream_type{akastd::basic_ostream}’and‘conststd::pair’)我猜这是行不通的,因为我的重载在std::copy中不可用,但这是

c++ - 为什么 ranges::ostream_iterator 是默认可构造的?

这个问题遵循评论中的讨论here.在EricNiebler的ranges-v3library中(这有点成为C++20标准的一部分),ranges::ostream_iterator是default-constructible-没有ostream。怎么会?我认为后来有效构造的“虚拟”构造是C++中的反模式,我们正在逐渐摆脱这种缺陷。std::ostream迭代器canonlybeconstructedwithastream(目前-在C++20之前)。似乎我们可以用默认构造的range::ostream_iterator做任何事情...所以,这是怎么回事? 最佳

python ‘float‘object is not iterable

目录Python'float'objectisnotiterable错误背景错误示例错误解决方法结论应用场景错误解决方法介绍迭代(Iteration)迭代的工作方式迭代可迭代对象迭代其他数据结构自定义可迭代对象Python'float'objectisnotiterable在Python中,​​'float'objectisnotiterable​​是一个常见的错误消息。它在迭代(iteration)过程中表示发生了错误,因为我们试图对浮点数进行迭代操作,但是浮点数是不可迭代的。错误背景在Python中,可迭代对象(iterable)是一种能够被遍历(iterating)的数据类型,例如列表(

c++ - 通过变量名遍历结构

更新:6个月后,我刚刚看到这个答案:Isitlegaltoindexintoastruct?:AnswerbySlava.我认为这是比此处提供的任何解决方案都好得多的解决方案,因为绝对没有未定义的行为。希望这对下一个人有帮助,因为现在实现对我来说已经太迟了。在您评论告诉我使用数组或vector或任何形式的容器之前,我不能这样做是一个残酷的事实。我知道,这可以用一个数组来解决,否则任何解决方案都非常“hacky”。我很想使用容器,但我绝对不能。我是一家大型公司的中层开发人员,我们正在使用公司范围的库通过以太网发送数据。有多种原因导致它不支持数组/vector,而是使用POD结构(普通旧数

c++ - transform_iterator 编译问题

你好,我不喜欢发布编译问题,但我真的搞不懂这个问题。使用此代码:#include#includeusingnamespacestd;templatestructget_value{constV&operator()(std::pairconst&p){returnp.second;}};classtest{typedefmapTMap;TMapmymap;public:typedefget_valueF;typedefboost::transform_iteratortransform_iterator;transform_iteratorbegin(){returnmake_tran

c++ - 为什么 std::istream_iterator 忽略换行符?

我有以下代码:#include#include#includeintmain(){std::stringstreamstr;strit(str),end;for(;it!=end;++it){std::cout输出是:[abcdef][97][98][99][100][101][102]为什么std::istream_iterator忽略换行符? 最佳答案 因为istream_iterator使用operator>>。并且istream::operator>>(char)会跳过空格,除非您取消设置流的skipws标志。(例如使用no

c++ - 用指针理解 const_iterator?

我试图理解const_iterator的含义。我有以下示例代码:voidCustomerService::RefreshCustomers(){for(std::vector::const_iteratorit=customers_.begin();it!=customers_.end();it++){(*it)->Refresh();}}Refresh()是Customer类中的一个方法,它没有定义为const。起初我以为const_iterator应该禁止修改容器的元素。但是,此代码可以毫无怨言地编译。这是因为正在进行额外级别的间接访问吗?const_iterator究竟是做什么/