小编Hat*_*end的帖子

CMake - 创建静态库

我的项目中有两个文件叫做Test4:

Structure.h Structure.c

我想创建一个静态库,可以由其他想要使用这些文件的项目加载.这是我目前的CMake文件:

cmake_minimum_required(VERSION 3.6)
project(Test4)

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")

set(SOURCE_FILES Structure.c Structure.h)
add_library(Test4 STATIC ${SOURCE_FILES})
Run Code Online (Sandbox Code Playgroud)

当我使用该CMake文件构建时,不会生成任何静态库.什么都没发生.难道我做错了什么?

我正在使用CLion IDE.

c c++ build cmake clion

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

Java 8 Streams - 超时?

我想循环一个庞大的数组并做一组复杂的指令需要很长时间.但是,如果超过30秒,我希望它放弃.

恩.

final long start = System.currentTimeMillis();
myDataStructure.stream()
    .while(() -> System.currentTimeMillis() <= start + 30000)
    .forEach(e ->
    {
      ...
    });
Run Code Online (Sandbox Code Playgroud)

如果满足某个条件,我想避免returnforEach通话中说话.

java java-8 java-stream

18
推荐指数
4
解决办法
3735
查看次数

如何为Cygwin安装Git?

我在网上看到一些教程,但他们只展示如何在安装Cygwin的Cygwin AS上安装git.我已经安装了cygwin并进行了定制,所以我不想重复这一步.如何安装git框架以便将其用于github?

谢谢.

cygwin github

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

克里昂 - 回车?\ r

我正在使用CLion IDE,我正在尝试回车.

我在C中做一个print语句,并具有以下语法:

printf("\rHello World!");这是一个循环.循环仍然Hello World在自己的行上打印.\n我的计划中没有.我已经尝试将line separators选项更改为unix mac OS,windows并且它们都没有更改功能.谷歌也让我没有得到有用的答案.

int main()
{
    int i = 0;
    while (i < 5000000)
    {
        printf("\rThis is line number %d!", i++);   
    }

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我的预期输出只是控制台窗口中的一行文本.

谢谢.

c special-characters carriage-return clion

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

多个对象类型的JavaFX TreeView?(和更多)

我目前有以下对象数据结构:

项目

  • 字符串名称
  • ArrayList信息

字符

  • 字符串名称
  • 物品的集合

帐户

  • 字符串名称
  • 收集字符(最多8个最大)

我想创建一个如下所示的TreeView:

Root(invisible)
======Jake(Account)
============JakesChar(Character)
==================Amazing Sword(Item)
==================Broken Bow(Item)
==================Junk Metal(Item)
======Mark(Account)
============myChar(Character)
==================Godly Axe(Item)
======FreshAcc(Account)
======MarksAltAcc(Account)
============IllLvlThisIPromise(Character)
======Jeffrey(Account)
============Jeff(Character)
==================Super Gun(Item)
==================Better Super Gun(Item)
==================Super Gun Scope(Item)
Run Code Online (Sandbox Code Playgroud)

我把所有这些名字都搞定了,显然真正的实现会复杂得多.如何才能做到这一点?TreeItem要求每个TreeItem与其父类型相同.

我唯一的解决方案是执行以下操作:

public class ObjectPointer
{
    Object pointer;
    String name;
}
Run Code Online (Sandbox Code Playgroud)

我的TreeView将是类型,ObjectPointer并且在我要投射ObjectPointer到的每一行上Account,Character,或者Item.这是AWFUL,但我认为它会起作用.

子问题:

  • 如何TreeItem检测setOnMouseHover事件?

  • 我如何获得TreeItem不使用toString其类型的方法,而是使用自定义方式显示String他们需要的属性?

  • 如何让TreeItem(s)在GUI中显示彩色文本而不是纯文本?

谢谢!

java treeview user-interface javafx

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

Java - LinkedList push() pop() 暗示它是一个堆栈,而不是一个队列?

在我的数据结构课上,我了解到 aLinkedList是一个队列。就像现实生活中的一条线,第一个进入这条线的人将是第一个离开的人。说得通。如下所示,aListedList实现了Queue具有 FIFO(先进先出)过程的 a。

但是,如果您查看方法push(E)和的说明pop(),它们的内容如下:

推(E)

将一个元素推送到此列表表示的堆栈上。换句话说,在此列表的前面插入元素。

流行音乐()

从此列表表示的堆栈中弹出一个元素。换句话说,删除并返回此列表的第一个元素。

那是......不是队列。那是一个堆栈。进入 LinkedList via 的第一个元素push无法访问,pop直到每个元素都被pop()'ed后添加。

为什么是这样?我知道 LinkedLists 既可以用作堆栈(如果您只使用addFirst(E)and removeFirst()),也可以用作队列(如果您只使用addFirst(E)and removeLast(),反之亦然)那么为什么会这样呢?我觉得pop()应该删除并返回最后一个元素,或者push(E)应该在LinkedList. 那么就更有意义了。

TLDR:为什么LinkedList'spushpop暗示它在LinkedList实际实现时作为堆栈工作Queue

在此处输入图片说明

java queue linked-list data-structures

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

JavaFX在一个场景中有多个窗格?

我正在尝试创建一个应用程序,它将在顶部有一个日期(总是自动居中),而底部的内容不会与任何方向对齐.

我认为最好的办法是:

Pane normalLayout = new Pane();
StackPane centeredLayout = new Stackpane();
Label centeredText = new Label("I want this text centered!");
Button unorganizedButton = new Button("Press me");
centeredLayout.getChildren().add(centeredText);
normalLayout.getChildren().add(unorganizedButton);
Run Code Online (Sandbox Code Playgroud)

但后来我做不了类似的事情:

Scene myScene = new Scene(centeredLayout, normalLayout, 500, 500);
Window myWindow = new Window();
myWindow.setScene(myScene);
myWindow.show();
Run Code Online (Sandbox Code Playgroud)

那么怎么做呢?如何在同一场景中存在多个窗格?

java user-interface javafx pane

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

Java8 Stream - 来自IntStream的字节的HashSet

我试图创建HashSet<Byte>byte小号1, 2, 3, ... 9与Java 8流API.我想使用IntStream然后降级值byte就可以了.

我正在尝试变种

HashSet<Byte> nums = IntStream.range(1, 10).collect(Collectors.toSet());

HashSet<Byte> nums = IntStream.range(1, 10).map(e -> ((byte) e)).collect(Collectors.toSet());

但这些都不起作用.

Error:(34, 73) java: method collect in interface java.util.stream.IntStream cannot be applied to given types;
  required: java.util.function.Supplier<R>,java.util.function.ObjIntConsumer<R>,java.util.function.BiConsumer<R,R>
  found: java.util.stream.Collector<java.lang.Object,capture#1 of ?,java.util.Set<java.lang.Object>>
  reason: cannot infer type-variable(s) R
    (actual and formal argument lists differ in length)
Run Code Online (Sandbox Code Playgroud)

我需要做的flatMap还是mapToObject

java java-stream

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

JavaFX TextField - 只允许输入一个字母

我正在尝试用 JavaFX 制作一款数独游戏,但我不知道如何只允许输入一个字母。答案是调用文本字段并执行以下操作:

myTextField.setOnKeyPressed(e ->
{
    if (!myTextField.getText().length().isEmpty())
    {
        // Somehow reject the key press?
    }
}
Run Code Online (Sandbox Code Playgroud)

上面的方法不适用于复制粘贴...或大量其他东西等等。使用像这样的按键侦听器似乎是一个糟糕的主意。一定有更好的东西吗?文本字段是否有一个属性只允许输入某些字符,或者只允许输入一定数量的字符?

谢谢你!

java user-interface javafx textfield

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

用于昂贵交换的排序算法?

我在我正在开发的应用程序中遇到了以下问题:

我给了两个清单:

list1 = {Z,K,A,B,A,C}

list2 = {A,A,B,C,K,Z}

list2是保证是的排序版本list1.

我的目标是排序list1 仅通过交换单元list1.因此,举例来说,我不能遍历list2,只是分配的每一个元素ilist1的每个元素jlist2.

使用list2作为一种资源,我需要排序list1互换可能的绝对最低数量.

是否有专门用于此目的的一组算法?我没有听说过这样的事情.

sorting algorithm

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