小编Hen*_*old的帖子

Iterator接口

我有一个大学的分配,要求我实现一个实现Iterator接口的内部类.迭代器适用于单链表超类.

目前我的内部类看起来像这样:

private class ListIterator implements Iterator<V>{

    Node temp;
    boolean nextCalled = false;

    ListIterator(Node fo){
        this.temp = fo;
    }

    @Override
    public boolean hasNext() {
        if(temp != null){
            return true;
        }
        return false;
    }

    @Override
    public V next() {
        nextCalled = true;
        return temp.getReprValue();
    }

    @Override
    public void remove() {
        if(nextCalled && hasNext()){
            nextCalled = false;
            removeElement(temp.getReprKey());
            temp = temp.getNext();
        }

    }

}
Run Code Online (Sandbox Code Playgroud)

现在我的问题是,即使列表实际为空,hasNext()方法也返回true.其他一切似乎都有效.我可能忽略了某处的逻辑缺陷,但我自己找不到它.

java iterator iterable linked-list

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

关闭导航视图控制器

我目前正在为iOS平台开发游戏.游戏的初始视图控制器是登录屏幕,一旦玩家登录,他就会进入加载屏幕,然后是导航视图控制器,其中包含带有当前游戏列表的表格视图.故事板的相关视图关系如下所示:

[登录界面] --modalsegue-> [加载画面] - modalsegue-> [导航控制器] - 关系 - > [tableview(带退出按钮)]

我想在导航视图的[表格视图]的底栏处创建一个退出按钮,该按钮将播放器带回[登录屏幕].我怎样才能做到这一点?

提前致谢!

iphone user-interface objective-c uinavigationcontroller ios

5
推荐指数
2
解决办法
1万
查看次数

带或不带 const/&amp; 符号的 C++ 方括号重载

我正在编写 C++ 代码,并遇到了一种情况,我希望为我的类重载方括号运算符。从各种来源,我发现您通常使用两种方法来执行此操作,一种使用const关键字,另一种不使用关键字,但在方法名称之前const使用与号 ( )。&下面给出一个例子。

int MyClass::operator[](unsigned int i) const {
    return this->values[i];
}

int & MyClass::operator[](unsigned int i) {
    return this->values[i];
}
Run Code Online (Sandbox Code Playgroud)

我的问题如下:

  1. 为什么我有两种方法,一种带关键字const,一种不带关键字?
  2. 我的第二个方法中的&符号(&)有什么作用?
  3. 当我的方法都不是设置器时,为什么可以使用方括号在给定索引处设置值,并且当我设置值时会调用这两个方法中的哪一个?

c++ operator-overloading square-bracket getter-setter

4
推荐指数
1
解决办法
945
查看次数

使用Lucas-Lehmer迭代查找Mersenne数

我目前正在编写一个C++程序,利用MS Win8.1上的ttmath api来查找Mersenne素数.我已经编写了Lucas-Lehmer算法,但无论我尝试什么价值,我总是得到一个没有Mersenne-number的消息.有人能指出我的Lucas-Lehmer算法中的错误吗?

void LLIteration::calculate()
{
    ttmath::UInt<100> num = 2;
    ttmath::UInt<100> s = 4;
    (num.Pow(this->exp));
    num = num-1;

    for(int i = 3; i < exp; ++i){
        s = (s*s-2) % num;
        std::cout << s << std::endl;
    }

    if(s == 0){
        std::cout << "Found Mersenne prime, 2^" << exp << " = " << num << std::endl;
    } else {
        std::cout << "no prime 2^" << exp << " = " << num << std::endl;
    }
}
Run Code Online (Sandbox Code Playgroud)

就像我说的那样,我总是得到没有主要信息,我无法弄清楚为什么.Exp是一个表示将2加到的幂的int,其余的非常简单.

提前致谢!

c++ algorithm math primes

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

Java - 引用HashMap中的对象时出现NullPointerException

我目前正在编写一个命令行程序,它应该从文本文件中获取行并将数据添加到HashMaps数组中.我目前NullPointerException在运行此方法时得到了一个.

Public class Vaerdata {
String[] linje;
String line;
String line2;
HashMap<String, Stasjon> stasjonsmap = new HashMap<String, Stasjon>();
HashMap<String, Stasjon>[] regionmap = (HashMap<String, Stasjon>[]) new HashMap<?, ?>[6];


void init() throws IOException{
    BufferedReader br = new BufferedReader(new FileReader("stasjoner_norge.txt"));
    BufferedReader brData = new BufferedReader(new FileReader("klimadata2012.txt"));
    for(int i = 0; i < 10; i++){
        brData.readLine();
    }
    br.readLine();
    while((line = br.readLine()) != null){
        linje = line.split("\\s+");
        stasjonsmap.put(linje[1], new Stasjon(Integer.parseInt(linje[1]), linje[2], Integer.parseInt(linje[3]), linje[4], linje[5], linje[6]));
        }
        if(linje[6].equals("AGDER")){
            System.out.println(stasjonsmap.get(linje[1])); //DEBUG
            regionmap[1].put(stasjonsmap.get(linje[1]).navn, stasjonsmap.get(linje[1]));
            System.out.println(regionmap[1].get(stasjonsmap.get(linje[1]).navn)); //DEBUG …
Run Code Online (Sandbox Code Playgroud)

java arrays hashmap nullpointerexception

2
推荐指数
1
解决办法
921
查看次数

NSBundle pathForResource:返回nil

我试图使用以下代码从iOS上的Xcode中的支持文件文件夹中访问.txt文件:

NSString* filePath = @"filename.txt";

NSLog(@"File path: %@", filePath);

NSString* fileRoot = [[NSBundle mainBundle] pathForResource:filePath ofType:@"txt"];

NSLog(@"File root: %@", fileRoot);
Run Code Online (Sandbox Code Playgroud)

第一个NSLog打印出我希望它打印的内容,但最后一个NSLog总是打印

文件根:(null)

在(尝试)将文件读入内存后从文件中访问文本也简单地给了我一个(null)打印输出.

这个问题的解决方案可能就在我的鼻子底下,我似乎无法找到它.任何帮助非常感谢!提前致谢.

file-io objective-c nsstring ios

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

为什么在每个ASM函数的开头都有pushl%ebp和movl%esp,%ebp?

我正在大学学习计算机体系结构和汇编编程课程.前段时间我们学会了如何在ASM中编写函数并用C语言调用它们.有一点我不明白 - 在每个ASM函数的开头,讲师总是做两个指令;

pushl   %ebp
movl    %esp, %ebp
Run Code Online (Sandbox Code Playgroud)

我不明白为什么他这样做,以及它在调用时对函数有什么影响.在我的Intel Mac上,在为IA32编写程序集时,无论是否包含这些指令或者只是跳过它,似乎都没有任何区别.

有人可以告诉我在调用这些指令时实际发生了什么,以及为什么总是在ASM函数的开头调用它们?最好是在GNU ASM中,虽然Intel ASM也没问题.

c assembly function instructions

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

glm 的 vec1、vec2、vec3 是什么?我应该如何/何时使用它们?

什么是a,glm::vec2它的应用是什么?我在 glm 参考中找不到它。不过,我可以找到 vec1。这让我认为这vec2是针对 2D 的,vec3是针对 3D 的,等等,但我可能是错的。

c++ opengl glm-math

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

递归地找到二阶导数

我试图在C中编写一个程序,它找到f(x)的二阶导数的数值,其中给出了x.当我使用我的函数找到一阶导数时,一切似乎都运行正常,但递归的二阶导数部分总是给我0.0.这是我的功能:

double derivative(double (*f)(double), double x0, int order) {
    if(order == 1){
        const double delta = 1.0e-6;
        double x1 = x0-delta;
        double x2 = x0+delta;
        double y1 = f(x1);
        double y2 = f(x2);

        return (y2 - y1) / (x2 - x1);
    } else if(order == 2) {
        const double delta = 1.0e-6;
        double x1 = derivative(f, x0, 1)-delta;
        double x2 = derivative(f, x0, 1)+delta;
        double y1 = derivative(f, f(x1), 1)-delta;
        double y2 = derivative(f, f(x2), 1)+delta;

        return (y2 - y1) …
Run Code Online (Sandbox Code Playgroud)

c math recursion calculus derivative

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

C++ 运算符重载 [] 和返回类型

我刚刚重新审视 C++,我有一个关于 [] 运算符重载的问题,更具体地说,为什么我的程序不起作用。

在 vec.cpp 中给出以下代码:

double Vec::operator[](unsigned int i) const {
    return this->values[i];
}

double & Vec::operator[](unsigned int i) {
    return this->values[i];
}
Run Code Online (Sandbox Code Playgroud)

这些在 vec.h 中定义为 Vec 类的方法,如果我不在 main.cpp 中使用该运算符,一切都很好。它可以正常编译,没有错误。

但是,一旦我在主函数中执行此操作(使用 std::cout 和 std::endl):

cout << a[0] << endl;
Run Code Online (Sandbox Code Playgroud)

事情出了问题。我得到的错误是一堆

candidate function template not viable: no known conversion from 'Vec' to 'char' for 2nd argument
operator<<(basic_ostream<_CharT, _Traits>& __os, char __cn)
Run Code Online (Sandbox Code Playgroud)

您可以在其中将“char”替换为任何原始数据类型。

这是一个工作示例

cout << a[0] << endl;
Run Code Online (Sandbox Code Playgroud)
candidate function template not viable: no known conversion from 'Vec' to …
Run Code Online (Sandbox Code Playgroud)

c++ class operator-overloading square-bracket

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