iterator 相关问题

迭代器是一种面向对象的编程模式,允许遍历集合,不知道实际实现或物理内存中的对象地址。它是四人帮的行为设计模式之一。

为什么在 C++11 之后 std::basic_string 的尾后迭代器的取消引用仍然是 UB?

众所周知,C++11 为 std::basic_string 添加了一个 null 终止符(这不计入大多数成员函数)。但是当我阅读cpp ref时,我发现对end()的取消引用是一个UB(这一段是...

回答 1 投票 0

为什么发电机更快?

我知道生成器比迭代器更快。我还了解生成器可以使用 for 循环语法来实现。例如: 导入时间 startT = 时间.time() 定义 myGe...

回答 2 投票 0

C++ 传递迭代器与函数指针

我正在编写一个循环列表列表的递归函数。 这是函数的标题: void findDirToDelete(目录*& current_dir_ptr, 目录*& dir_to_delete, int

回答 1 投票 0

外部K路合并。具有整数流的迭代器

迭代器未按预期工作。 这是k路合并算法 我们有一个很大的输入文件(1024 字节用于测试),其中包含随机生成的整数,并且该文件被分为 n 个较小的块,w...

回答 1 投票 0

可通过迭代器和索引访问的类

我的类实现了一个迭代器,所以我可以这样做: 对于我在类(): 但我也希望能够通过索引访问该类: 类()[1] 我怎样才能做到这一点?

回答 2 投票 0

为什么 std::prev() 应用于 QSet<int*> 迭代器会给我一个段错误?

我有 Debian 11 amd64、Qt 5.15.2,并尝试使用 std::prev(it.end()) 获取 QSet 中的最后一个元素,如下所示: #包括 int main() { 返回 *(int*)(*(std::prev(QSet) 我有 Debian 11 amd64、Qt 5.15.2,并尝试使用 std::prev(it.end()) 获取 QSet 中的最后一个元素,如下所示: #include <QSet> int main() { return *(int*)(*(std::prev(QSet<int*>({new int(10)}).end()))); } 但是当我运行这个时,我遇到了段错误。 如果我将 std::prev() 更改为 operator--,一切都会完美运行 - 正如预期的那样,我得到的返回码为 10(我创建的集合的最后一项是 int* 到 10)。但 operator-- 在 Qt 5.15 中已被弃用。 它可能在不同的 Qt 版本上工作得很好,但我的目标是让这个版本的 Qt 工作。 有人知道我做错了什么吗? 附注如果需要,您可以在 https://github.com/makise-homura/qt-crash-test 查看现成的演示代码片段。 您的代码的问题是您取消引用指针而不检查它是否有效。在 C++ 中,确保仅取消引用有效指针以避免未定义的行为至关重要。 我不明白为什么要在 main 函数中返回它,但你可以这样写: #include <QSet> #include <iostream> int main() { QSet<int *> mySet{ new int(10) }; if (!mySet.isEmpty()) { int *ptr = *mySet.begin(); // Get the pointer to the first (and only) element int a = *ptr; // Dereference the pointer to get the value std::cout << "a = " << a << std::endl; } else { std::cerr << "Set is empty." << std::endl; } return 0; }

回答 1 投票 0

&str

如何将迭代器<&str>转换为字符串,并散布常量字符串,例如“ “? 例如,给定: 让 xs = vec!["第一", "第二", "...

回答 5 投票 0

如何防止 unordered_map.find() 与错误的结束迭代器进行比较?

我们刚刚在代码中发现了一个错误,如下所示: 类 foo { unordered_map m_someMap; 民众: 无效的东西(){ 无序地图

回答 1 投票 0

Python 迭代器:iglob() 的迭代器比 glob() 的列表提供什么?

给出这段代码: 从 glob 导入 glob,iglob 对于 glob('/*') 中的 fn: 打印 fn 打印 '' 对于 iglob('/*') 中的 fn: 打印 fn 阅读 glob 的文档我发现 glob() 返回...

回答 2 投票 0

C++ 中强化的“auto”

有一次我意识到我希望能够编写这样的代码而不重复代码: 模板 std::ostream& 运算符<< (std::ostream& o, const

回答 1 投票 0

使用 C++17 算法并行化简单循环

我有一个并行代码,可以基本上简化为: #包括 #包括 结构 TKeyObjPtr; 类 TObj { 民众: virtual voidCalculate(TKeyObjPtr const &...

回答 1 投票 0

让自定义迭代器在 Rust 中通过 &String 工作

我目前正在努力实现一个迭代器,它分割给定的字符串并将子字符串作为迭代器返回。对于特殊字符,它将仅返回特殊字符 o...

回答 1 投票 0

将 ArrayObject 与 iterator_apply 一起使用

不知道为什么这段代码会失败,但它是: $a = new ArrayObject(); $a['b'] = 10; foreach ($a as $b) { // 循环工作正常 var_dump($b); } iterator_apply($a, fn ($x) => var_dump($x)); /...

回答 1 投票 0

有条件地使用 io.Source 迭代器

我想有条件地以块的形式读取带有 scala.io.Source 的文件,因此在处理块之后,我可以稍后从同一位置继续读取。 假设我有一个 10 行的文件,其中有 numb...

回答 1 投票 0

在字符串上使用 string.replace 时,字符串上的 C++ 迭代器会指向空字符,导致字符串长度超过 22

只要我不增加该字符串的大小,代码就可以正常工作并正常输出。在字符串 (t1) 声明或替换语句中添加单个字符会破坏

回答 1 投票 0

看起来 std::move_iterator 只适用于字符串数据类型

如果容器具有字符串类型的数据,则可以使用 std::move_iterator 将数据从源容器移动到目标容器。 std::move_iterator 不与其他数据一起操作

回答 1 投票 0

迭代 CopyOnWriteArrayList 时出现 UnsupportedOperationException

我在一本书上看到这样一句话: 在基于写时复制的迭代器或 ListIterator 上调用的任何变异方法(例如添加、设置或删除)都会抛出 UnsupportedOperationExce...

回答 2 投票 0

你能返回闭包或创建行为类似于闭包的可调用对象吗?

我一直遇到一个问题。比如说我有以下内容: fn make_iterator<'a, T>(t: &'a T) -> ///??? 其中 T:一些特征 { /* 一些复杂的逻辑*/ 返回 |i:u...

回答 1 投票 0

查看迭代器

Kotlin 中是否有一种方法可以“窥视”迭代器的下一个元素而不前进?对于示例用例,请考虑此函数用于合并两个预排序的序列: 有趣的合并(

回答 1 投票 0

如何均衡列表集合的大小Java

所以我有一个列表集合,其中包含来自流式传感器的数据。然后我做了一个 for 循环将其形成为稍后我将用来发送到其他地方(网络服务器)的格式。但有时...

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.