H*7
2 楼
恩?
p*2
3 楼
class MyIterator(v:Vector[Vector[Int]]){
private[this] val vector1=v.iterator
private[this] var vector2:Iterator[Int]=null
def hasNext():Boolean={
if(vector2!=null && vector2.hasNext) return true
vector2=null
while(vector1.hasNext && (vector2==null || !vector2.hasNext))
{
val next=vector1.next
if(next!=null) vector2=next.iterator
}
vector2!=null && vector2.hasNext
}
def next():Int={
if(hasNext())
return vector2.next
else
throw new Exception("empty")
}
}
private[this] val vector1=v.iterator
private[this] var vector2:Iterator[Int]=null
def hasNext():Boolean={
if(vector2!=null && vector2.hasNext) return true
vector2=null
while(vector1.hasNext && (vector2==null || !vector2.hasNext))
{
val next=vector1.next
if(next!=null) vector2=next.iterator
}
vector2!=null && vector2.hasNext
}
def next():Int={
if(hasNext())
return vector2.next
else
throw new Exception("empty")
}
}
s*a
4 楼
没有必要确认,citi的卡过了都给bonus。
f*t
5 楼
稍微写了下,感觉一个实现C++普通接口的至少要两小时……
w*w
6 楼
不用打 肯定有 真没有打了也没用
搞丢rule1:Never call CSR for bonus
搞丢rule1:Never call CSR for bonus
p*2
7 楼
object test2 extends App {
val v1=Vector(1,2,3)
val v2:Vector[Int]=null
val v3=Vector(4,5,6)
val vv:Vector[Vector[Int]]=Vector(v1,v2,v3)
val it=new MyIterator(vv)
for(i{
println(it.hasNext)
println(it.next)
}
}
true
1
true
2
true
3
true
4
true
5
true
6
false
Exception in thread "main" java.lang.Exception: empty
at MyIterator.next(test2.scala:25)
at test2$$anonfun$1.apply$mcVI$sp(test2.scala:39)
at scala.collection.immutable.Range.foreach$mVc$sp(Range.scala:142)
at test2$delayedInit$body.apply(test2.scala:36)
at scala.Function0$class.apply$mcV$sp(Function0.scala:40)
at scala.runtime.AbstractFunction0.apply$mcV$sp(AbstractFunction0.scala:
12)
at scala.App$$anonfun$main$1.apply(App.scala:71)
at scala.App$$anonfun$main$1.apply(App.scala:71)
at scala.collection.immutable.List.foreach(List.scala:309)
at scala.collection.generic.TraversableForwarder$class.foreach(
TraversableForwarder.scala:32)
at scala.App$class.main(App.scala:71)
at test2$.main(test2.scala:28)
at test2.main(test2.scala)
val v1=Vector(1,2,3)
val v2:Vector[Int]=null
val v3=Vector(4,5,6)
val vv:Vector[Vector[Int]]=Vector(v1,v2,v3)
val it=new MyIterator(vv)
for(i{
println(it.hasNext)
println(it.next)
}
}
true
1
true
2
true
3
true
4
true
5
true
6
false
Exception in thread "main" java.lang.Exception: empty
at MyIterator.next(test2.scala:25)
at test2$$anonfun$1.apply$mcVI$sp(test2.scala:39)
at scala.collection.immutable.Range.foreach$mVc$sp(Range.scala:142)
at test2$delayedInit$body.apply(test2.scala:36)
at scala.Function0$class.apply$mcV$sp(Function0.scala:40)
at scala.runtime.AbstractFunction0.apply$mcV$sp(AbstractFunction0.scala:
12)
at scala.App$$anonfun$main$1.apply(App.scala:71)
at scala.App$$anonfun$main$1.apply(App.scala:71)
at scala.collection.immutable.List.foreach(List.scala:309)
at scala.collection.generic.TraversableForwarder$class.foreach(
TraversableForwarder.scala:32)
at scala.App$class.main(App.scala:71)
at test2$.main(test2.scala:28)
at test2.main(test2.scala)
r*e
8 楼
请问之前有申过这张卡嘛?
w*x
15 楼
我就想问问那个初始化怎么方便的处理,二爷看看我的code吧
class CIterIter
{
public:
CIterIter(vector
bInited(false)
{}
bool hasNext()
{
if (!m_vecvec.empty() && !m_vecvec[0].empty())
return true;
int i,j;
return prob(i,j);
}
int getVal() { return m_vecvec[m_ni][m_nj]; }
void next()
{
if (!bInited)
{
bInited = true;
if (!m_vecvec.empty() && !m_vecvec[0].empty())
return;
}
prob(m_ni, m_nj);
}
private:
bool prob(int& i, int& j)
{
i = m_ni;
j = m_nj;
if (i >= m_vecvec.size())
return false;
if (i < m_vecvec.size() && j < m_vecvec[i].size()-1)
{
j++;
return true;
}
i++;
for(; i < m_vecvec.size(); i++)
{
if (!m_vecvec[i].empty())
break;
}
if (i == m_vecvec.size()) return false;
j = 0;
return true;
}
int m_ni;
int m_nj;
vector
bool bInited;
};
【在 p*****2 的大作中提到】
![](/moin_static193/solenoid/img/up.png)
: object test2 extends App {
: val v1=Vector(1,2,3)
: val v2:Vector[Int]=null
: val v3=Vector(4,5,6)
:
: val vv:Vector[Vector[Int]]=Vector(v1,v2,v3)
: val it=new MyIterator(vv)
:
: for(i: {
c*8
16 楼
不用打!肯定有
f*t
17 楼
Java版本比较方便,可以用ArrayList自带的iterator。C++如果只需要实现类似于Java
iterator的两个接口,倒是不难。
public class DoubleLevelArrayListIterator {
private Iterator> itLvl1;
private Iterator itLvl2;
public DoubleLevelArrayListIterator(ArrayList> a) {
itLvl1 = a.iterator();
itLvl2 = null;
}
public boolean hasNext() {
if (itLvl2 != null && itLvl2.hasNext()) {
return true;
} else {
while ((itLvl2 == null || !itLvl2.hasNext()) && itLvl1.hasNext()
) {
itLvl2 = itLvl1.next().iterator();
}
return itLvl2 != null && itLvl2.hasNext();
}
}
public Integer next() {
if (itLvl2 != null && itLvl2.hasNext()) {
return itLvl2.next();
} else {
while ((itLvl2 == null || !itLvl2.hasNext()) && itLvl1.hasNext()
) {
itLvl2 = itLvl1.next().iterator();
}
if (itLvl2 != null && itLvl2.hasNext())
return itLvl2.next();
else
return null;
}
}
public static void main(String[] args) {
ArrayList> a = new ArrayList>(
);
for (int i = 1; i <= 5; i++) {
ArrayList temp = new ArrayList();
for (int j = 1; j <= i; j++) {
temp.add(i * j);
}
a.add(temp);
}
DoubleLevelArrayListIterator it = new DoubleLevelArrayListIterator(a
);
while (it.hasNext()) {
System.out.println(it.next());
}
}
}
iterator的两个接口,倒是不难。
public class DoubleLevelArrayListIterator {
private Iterator
private Iterator
public DoubleLevelArrayListIterator(ArrayList
itLvl1 = a.iterator();
itLvl2 = null;
}
public boolean hasNext() {
if (itLvl2 != null && itLvl2.hasNext()) {
return true;
} else {
while ((itLvl2 == null || !itLvl2.hasNext()) && itLvl1.hasNext()
) {
itLvl2 = itLvl1.next().iterator();
}
return itLvl2 != null && itLvl2.hasNext();
}
}
public Integer next() {
if (itLvl2 != null && itLvl2.hasNext()) {
return itLvl2.next();
} else {
while ((itLvl2 == null || !itLvl2.hasNext()) && itLvl1.hasNext()
) {
itLvl2 = itLvl1.next().iterator();
}
if (itLvl2 != null && itLvl2.hasNext())
return itLvl2.next();
else
return null;
}
}
public static void main(String[] args) {
ArrayList
);
for (int i = 1; i <= 5; i++) {
ArrayList
for (int j = 1; j <= i; j++) {
temp.add(i * j);
}
a.add(temp);
}
DoubleLevelArrayListIterator it = new DoubleLevelArrayListIterator(a
);
while (it.hasNext()) {
System.out.println(it.next());
}
}
}
相关阅读
Alaska AirlineAMEX BCP on CostcoSERVE amex cc reward求教请问ISIS可以实现关联两个Serve账号么?discover的fico跟credit karma的数据有多大区别?每个月定期汇钱到中国,成本最低的操作方法。急求:谁还记得去年11月份那波discover it是消费满750还是500给开卡的bonus啊?蓝鸟关起来略麻烦啊怎么用debeit 卡在walmart买money order?serve可以在walmart用debit card冲值吧回国了还能保留BOA的卡吗?买Bloomingdales的eGC被cancelebay bucks 8%discover fico score 靠铺吗?staples rebate得的visa gc能冲bluebird吗? (转载)狗日的BOA, 这笔钱我怎么要回来?买MoneyPak要看小儿脸色吗淘宝上用chase ink+ 总过不去,MP+ 秒过,什么道理?算deal么?Citi开checking account送30K的AApointsciti aa加副卡会不会影响副申请人信用分?