![]() |
1
4
您可以使用两个循环来完成此操作。第一个声明迭代器,其名称是容器变量的函数(如果担心与自己的代码冲突,可以使其更丑)。第二个声明值变量。
通过使用相同的循环终止条件,外部循环只会发生一次(如果幸运的话,会被优化掉)。此外,如果映射为空,则避免在迭代器上调用->second。这与三元运算符在内部循环增量中的原因相同;最后,我们只将var保留为最后一个值,因为它将不再被引用。 您可以内联CI(容器),但我认为它使宏更具可读性。 |
![]() |
2
8
你会找的 BOOST_FOREACH -他们已经为你做了所有的工作! 如果你确实想自己滚动,你可以在C++中的任何地方声明一个块,它解决了你的IRT-GT;第二个中间存储的范围问题。 …
|
![]() |
3
3
STL transform 函数也做类似的事情。 参数是(按顺序):
对于一个非常简单的示例,可以通过以下方式将字符串中的每个字符大写:
或者,还有 accumulate 函数,它允许在对函数对象的调用之间保留一些值。 积累 不修改输入容器中的数据 转型 . |
![]() |
4
1
你有没有想过用
Boost libraries
?他们有一个
不幸的是,我不能准确地告诉你 怎样 使用它,因为我不知道足够的C++: This Google search 找到了一些有希望的答案: comp.lang.c++.moderated , Boost transform_iterator use case . |
![]() |
5
1
对于你来说,每个人都是你最好的选择。漂亮的是,它们实际上提供给您的是宏boost foreach(),然后您可以包装它,并定义为您在代码中真正想要调用的任何东西。大多数人都会选择好的“foreach”,但其他商店可能有不同的编码标准,因此这符合这种心态。Boost还为C++开发人员提供了很多其他的东西!很值得使用。 |
![]() |
6
1
我用foreach()的一些变体创建了一个小foreach.h助手,其中包括在局部变量和指针上操作的两个变量,另外还有一个额外的版本可以防止从循环中删除元素。因此,使用我的宏的代码看起来很好也很舒适,如下所示:
输出:
我的 Foreach.h 提供以下宏:
他们确实为我工作,我希望他们也能让你的生活更轻松一点。) |
![]() |
7
1
这个问题有两部分。您需要以某种方式(1)在映射的上生成一个迭代器(或者更确切地说,一个可迭代的序列)。 价值观 (不是键),和(2)使用宏进行迭代,而不需要大量样板文件。 最干净的解决方案是使用 Boost Range Adaptor 对于第(1)部分和 Boost Foreach 部分(2)。您不需要编写宏或自己实现迭代器。
|
![]() |
8
0
您可以定义一个模板类,该类将mymap类型作为模板参数,并通过重载*和->对值执行迭代器的操作。 |
![]() |
9
0
C++中没有类型…这是如何为您编译的?(当然不是便携式的) |
![]() |
10
0
我实现了我自己的
例如,您可以在代码中使用它,如下所示:
|
![]() |
11
0
没有typeof(),因此可以使用:
|
![]() |
AstralHex · 矩阵乘法代码工作不正常 7 月前 |
![]() |
Fishie · 作为类成员的智能指针是否仍然自动释放?[关闭] 7 月前 |
![]() |
Die4Toast · 递归调用成员箭头运算符-> 7 月前 |
![]() |
Anka Hanım · 关于结构和动态数组地址的问题 8 月前 |