我试着把数字1,4,7.。。97存储到一个向量中。 如果我使用std::out<<; I; for循环正在工作。
但是push_back给出了一个错误:成员引用的base是一个函数,可能您的意思是不带参数地调用它。 我在谷歌上搜索了一下,却找不到一个对我有帮助的答案。
我唯一找到的是这个:
“在C++中,向向量添加元素可能会导致所包含数据的重新分配,这将使所有迭代器失效。这意味着,在插入新元素的同时,您不能使用迭代器对向量进行循环(基于范围的for循环就是这样做的)。但是,您可以使用索引进行迭代,并将向量大小作为条件,因为索引总是相同的。”
但是我要在向量上循环吗? 我以为我只是存储了迭代器
我很感激你的帮助
std::vector<int>rock();
int i;
for (int i = 1; i < 100; i+=3)
{
std::cout<< " " << i;
rock.push_back(i);
}
std::vector
是一个。。。 函数声明。
请改用std::Vector<;Int>;Rock;
或std::Vector<;Int>;Rock{};
。
本文向大家介绍C++ 向量迭代器,包括了C++ 向量迭代器的使用技巧和注意事项,需要的朋友参考一下 示例 begin将an返回iterator到序列容器中的第一个元素。 end返回iterator末尾的第一个元素。 如果矢量对象const,无论是begin和end返回const_iterator。如果const_iterator即使向量不返回,也要返回const,则可以使用cbegin和cend。
我有两个长度不同的< code>Vec,例如: 我想成对迭代它们,打印: 我可以使用< code>Iterator::zip来获得在< code>xs和< code>ys中具有匹配元素的对: 但是对于“不匹配”位,我需要复杂的代码来检查长度并从其余部分中提取一部分。 我想要一个完全基于迭代器的解决方案,所以我尝试了: 这是不正确的,因为第一个循环跳过了在另一个列表中没有匹配的第一个元素(x=4)。
Visual Studio 2015社区中的这段代码报告了一个编译错误: 错误(活动)没有重载函数“std::向量的实例 错误C2664'void std::vector
问题 你想反方向迭代一个序列 解决方案 使用内置的 reversed() 函数,比如: >>> a = [1, 2, 3, 4] >>> for x in reversed(a): ... print(x) ... 4 3 2 1 反向迭代仅仅当对象的大小可预先确定或者对象实现了 __reversed__() 的特殊方法时才能生效。 如果两者都不符合,那你必须先将对象转换为一个列表才行,比
问题内容: 如何从最后一项到第一个迭代一个项目? 问题答案: 如果要继续使用集合,可以使用以下方法: 如果您可以改用数组,则可以看一下answer。
有一个非常常见且简单的任务是在两个方向上通过某个范围进行循环迭代: 上面的代码运行完美,但我花了大约一个小时试图摆脱双重检查。 有没有办法解决如果没有如果?也许是一句话?
这是我正在查看的代码片段: 根据迭代器无效规则: 向量:插入点之前的所有迭代器和引用不受影响,除非新容器大小大于以前的容量(在这种情况下,所有迭代器和引用都无效)[23.2.4.3/1]迭代器无效规则 我明白,由于我在每个插入操作中重新分配iter的值,也许我能够保持它的有效性(如果我错了,请纠正我)。然而,迭代器“中间”在这种情况下仍然有效,即使我没有在循环中篡改它,而且当向量的容量发生变化时也
问题内容: 无论如何,要使python列表迭代器向后移动? 基本上我有这个 运行以下代码将产生输出: 我知道为什么它会给我输出,但是有没有办法我可以在str()方法中向后退一步呢? 编辑 好吧,也许可以更清楚地说明这一点。我不想做一个完全相反的事情,基本上我想知道是否有一种简单的方法可以等效于python中的 双向 迭代器? 问题答案: 不,通常您不能使Python迭代器向后移动。但是,如果您只想