C++ 中Iterator与C#中的KeyValuePair
C++中Iterator可以用++来进行遍历,只要拿到First就可以脱离容器进行遍历C#中的KeyValuePair却没有,如何达到用自己来控制遍历我现在算法里有两个函...
C++ 中Iterator可以用++来进行遍历,只要拿到First就可以脱离容器进行遍历
C#中的KeyValuePair却没有,如何达到用自己来控制遍历
我现在算法里有两个函数
TObject FirstOb()
TObject NextOb()
用C++的Iterator就很好实现
C#。。。。。。
C++下我可以
Class test
{
map<int,TObject> m_subList;
map<int,TObject>::iterator m_it;
TObject first()
{
m_it = m_SubList.Bigen();
return m_it.Second;
}
TObject next()
{
mit++;
return mit.Second;
}
}
以上是大体的意思,刚转C#有点水土不服。。。。
我知道有~foreach( KeyValuePair<string, int> i in dict )这个方法
但是我的算法遍历是一个~被动的方式,遍历的时候需要由外部来进行推动
比如说表格的遍历读取数据对象~只有当外部表现层,处理完了一个对象,在由~FRIST,Next提取下一个需要处理的对象。。。难道我要将我内部的数据链交给外部来处理? 展开
C#中的KeyValuePair却没有,如何达到用自己来控制遍历
我现在算法里有两个函数
TObject FirstOb()
TObject NextOb()
用C++的Iterator就很好实现
C#。。。。。。
C++下我可以
Class test
{
map<int,TObject> m_subList;
map<int,TObject>::iterator m_it;
TObject first()
{
m_it = m_SubList.Bigen();
return m_it.Second;
}
TObject next()
{
mit++;
return mit.Second;
}
}
以上是大体的意思,刚转C#有点水土不服。。。。
我知道有~foreach( KeyValuePair<string, int> i in dict )这个方法
但是我的算法遍历是一个~被动的方式,遍历的时候需要由外部来进行推动
比如说表格的遍历读取数据对象~只有当外部表现层,处理完了一个对象,在由~FRIST,Next提取下一个需要处理的对象。。。难道我要将我内部的数据链交给外部来处理? 展开
展开全部
.Net已经帮你封装了迭代器,集合可以用foreach遍历,
比C++的迭代器好用太多了···
比如C#字典类(.Net的哈希表的一种叫法),
var dict = new Dictionary<string, int> {
{ "Apple", 1 }, { "Orange", 2 }, { "Banana", 3 }
};
foreach( KeyValuePair<string, int> i in dict ) // 这里的KeyValuePair可用var替换
{
Console.WriteLine( i.Key + " : " + i.Value );
}
// 运行结果:
// Apple : 1
// Orange : 2
// Banana : 3
补充:
大概明白你的意思了,使用迭代器的MoveNext方法就行了
// 取得字典的迭代器(枚举器)
var enumerator = dict.GetEnumerator();
// 输出当前的项,每一项都是一个KeyValuePair<string, int>
Console.WriteLine(enumerator.Current);
// 输出下一项
Console.WriteLine(enumerator.MoveNext());
比C++的迭代器好用太多了···
比如C#字典类(.Net的哈希表的一种叫法),
var dict = new Dictionary<string, int> {
{ "Apple", 1 }, { "Orange", 2 }, { "Banana", 3 }
};
foreach( KeyValuePair<string, int> i in dict ) // 这里的KeyValuePair可用var替换
{
Console.WriteLine( i.Key + " : " + i.Value );
}
// 运行结果:
// Apple : 1
// Orange : 2
// Banana : 3
补充:
大概明白你的意思了,使用迭代器的MoveNext方法就行了
// 取得字典的迭代器(枚举器)
var enumerator = dict.GetEnumerator();
// 输出当前的项,每一项都是一个KeyValuePair<string, int>
Console.WriteLine(enumerator.Current);
// 输出下一项
Console.WriteLine(enumerator.MoveNext());
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询