标签: iterator

使用boost :: iterator_facade有什么优缺点?

是的 - 标题几乎总结了它.我有很多实现迭代器概念的类型,我想知道是否值得引入这个boost头而不是手动实现.

至今:

好处

  • 明确指出
  • 不太可能有bug

c++ boost iterator

8
推荐指数
1
解决办法
2054
查看次数

使用s:iterator迭代地图列表

我正在尝试使用s:iterator迭代一个地图列表.我可以毫无问题地遍历List,但是我不能让它迭代遍历地图的条目.到目前为止,我有这个:

[..]
<s:iterator value="records" status="recordsStatus" var="record">
        <s:if test="#recordsStatus.index ==0">
            <tr>
                <td colspan="*"></td>
            </tr>
        </s:if>
        <tr>
            <s:iterator value="record.entrySet()" status="fieldStatus">
            <td>
                <s:property value="key"/>/<s:property value="value"/>
            </td>
            </s:iterator>
        </tr>
    </s:iterator>
[..]
Run Code Online (Sandbox Code Playgroud)

标签生成

<tr></tr>
Run Code Online (Sandbox Code Playgroud)

对于每个条目,但它不会通过第二个迭代器,所以我想我在使用value属性做错了.你能帮帮我吗?

谢谢

何塞

iterator struts2 map

8
推荐指数
1
解决办法
3万
查看次数

Boost有容器外观吗?

我正在学习如何使用iterator_facade来隐藏迭代器实现的一些样板.在我当前的用例中,我正在包装另一个容器(实际上来自.NET代码)所以我需要begin(),end(),typedef等.至少我希望结果类型与BOOST_FOREACH一起使用.是否有一个方便的东西来提升简化?

c++ containers boost iterator

8
推荐指数
1
解决办法
563
查看次数

Collection - Iterator.remove()vs Collection.remove()

按照Sun,

"Iterator.remove是在迭代期间修改集合的唯一安全方法;如果在迭代进行过程中以任何其他方式修改基础集合,则行为未指定."

我有两个问题:

  1. 是什么让这个操作"Iterator.remove()"比其他操作稳定?
  2. 如果它在大多数用例中没用,它们为什么提供"Collection.remove()"方法呢?

java collections iterator concurrentmodification

8
推荐指数
3
解决办法
7000
查看次数

如何通过decltype声明迭代器的值

在C++ 98中,我通常使用以下命令在迭代器的值类型中声明一个变量:

typename std::iterator_traits<Iterator>::value_type value;
Run Code Online (Sandbox Code Playgroud)

在C++ 11中我们有decltype并且我认为推导值类型的最简单方法是:

decltype(*iterator) value;
Run Code Online (Sandbox Code Playgroud)

不幸的是,对于大多数迭代器,*iterator的类型是value_type&而不是value_type.任何想法,没有类型修改类,如何按摩上面产生value_type(而不是任何参考)?


我不认为这个问题是不合理的,因为以下内容相当稳健但最终会创建另一个变量.

auto x = *iterator;
decltype(x) value;
Run Code Online (Sandbox Code Playgroud)

另请注意,我真的想要推导出的类型,而不仅仅是一个实例,例如,如果我想声明这些值的std :: vector.

c++ iterator decltype type-traits c++11

8
推荐指数
1
解决办法
3188
查看次数

是否存在min_element的变体,它具有投影功能?

std::min_element将返回operator<(T,T)由自定义谓词定义的最小元素bool Pred(T,T).是否有类似的函数返回投影函数f(T)->R采用最小值的元素?

显然我可以定义bool Pred(t1,t2) { return f(t1) < f(t2); },但当f是lambda时,这有点不方便.

c++ algorithm iterator projection c++11

8
推荐指数
2
解决办法
1762
查看次数

iostream迭代器如何工作?

从标准模板库我开始了解istreamostream迭代器.我无法理解它们是如何工作的.

我也不明白他们为什么被使用.它们为什么有用?

c++ iterator iostream c++11

8
推荐指数
2
解决办法
482
查看次数

TypeError:str对象不是迭代器

我有一个由单词组成的文件,每行一个单词.该文件如下所示:

aaa
bob
fff
err
ddd
fff
err
Run Code Online (Sandbox Code Playgroud)

我想计算一对一出现的单词的频率.

例如,

aaa,bob: 1
bob,fff:1
fff,err:2
Run Code Online (Sandbox Code Playgroud)

等等.我试过这个

f=open(file,'r')
content=f.readlines()
f.close()
dic={}
it=iter(content)
for line in content:
    print line, next(line);
    dic.update({[line,next(line)]: 1})
Run Code Online (Sandbox Code Playgroud)

我收到了错误:

TypeError: str object is not an iterator
Run Code Online (Sandbox Code Playgroud)

然后我尝试使用迭代器:

it=iter(content)
for x in it:
    print x, next(x);
Run Code Online (Sandbox Code Playgroud)

再次遇到同样的错误.请帮忙!

python dictionary iterator generator

8
推荐指数
2
解决办法
5441
查看次数

有没有办法在python中使用itertools来清理嵌套迭代?

假设我有以下代码:

a = [1,2,3]
b = [2,4,6]
c = [3,5,7]

for i in a:
  for j in b:
    for k in c:
      print i * j * k
Run Code Online (Sandbox Code Playgroud)

有没有办法可以在一行中合并迭代器而不是嵌套?

python iterator nested-loops python-itertools

8
推荐指数
1
解决办法
168
查看次数

如何检查切片是否已排序?

如何检查切片是否已排序?

假设一个接受切片的函数i32,是否有一种惯用的Rust检查切片是否已排序的方法?

fn is_sorted(data: &[i32]) -> bool {
    // ...
}
Run Code Online (Sandbox Code Playgroud)

是否有可能推广上述方法以便接受迭代器?

fn is_sorted<I>(iter: I)
where 
    I: Iterator, 
    I::Item: Ord,
{
    // ...
}
Run Code Online (Sandbox Code Playgroud)

sorting iterator slice rust

8
推荐指数
2
解决办法
431
查看次数