小编mar*_*trz的帖子

比较所有类型的工作?

让我们考虑一个类型t和两个x,y类型的变量t.

电话compare x y会对任何类型有效t吗?我找不到任何反例.

ocaml

7
推荐指数
2
解决办法
1803
查看次数

用QML测量经过的时间

让我们考虑以下示例:我们有一个Qt Quick Controls Button.用户在5秒内点击两次.在Button第一次推送之后,QML Timer正在运行这5秒钟.我们希望测量两次点击之间经过的时间,精确度为毫秒.

不幸的是,QML Timer无法向我们显示经过的时间.

正如BlackBerry论坛上所建议的那样,可以比较日期.但是,这不是很方便,因为第一次点击可能发生在31 Dec 2015, 23:59:55第二次点击,第二次点击1 Jan 2016, 00:00:05,检查必须是复杂的.

还有更好的选择吗?

time qt qml qt-quick qtquick2

6
推荐指数
3
解决办法
9742
查看次数

以自动方式从希腊文本中删除变音符号

我有一个标签文件形式的反编译 stardict 字典

????? <tab> bad
Run Code Online (Sandbox Code Playgroud)

where<tab>表示表格。

不幸的是,定义单词的方式要求查询包含所有变音符号。因此,如果我想搜索 ????,我需要让所有 iotas 和抑扬符都正确。

因此,我想转换整个文件,以便删除关键字的变音符号。所以这条线会变成

????? <tab> <h3>?????</h3> <br/> bad
Run Code Online (Sandbox Code Playgroud)

我知道我可以在 bash 中逐行读取文件,如下所述 [1]

while read line           
do           
    command           
done <file 
Run Code Online (Sandbox Code Playgroud)

但是有什么办法可以使转换线的操作自动化呢?我听说过iconv[2] 但没有设法使用它实现所需的转换。我最好使用 bash 脚本。


此外,是否有一种自动音译希腊语的方法,例如使用 Perseus 的方法?

珀尔修斯的做法


/edit: 也许我们可以使用 Unicode 代码?我们可以注意到U+1F0xU+1F8xforx < 8等都是字母 ? 的变体。这将减少手动工作量。我也接受 C++ 解决方案。

[1] http://en.kioskea.net/faq/1757-how-to-read-a-file-line-by-line
[2]如何从文件中删除所有变音符号?

bash diacritics transliteration

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

Java 8类表示时间间隔

Java 8引入了一个新的Time&Date API,类似于PeriodDuration.

现在我正在寻找一个代表日期间隔的课程,例如"从2016年8月4日到2016年8月8日"并回答问题:这些间隔是否重叠.Period似乎不满足于此,因为它以仿射方式工作,不知道间隔开始的位置,只需要多长时间.

是否有符合我需求的Java 8标准库类?或者我必须自己写?

java time date

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

静态顺序初始化fiasco,iostream和C++ 11

根据C++ 11规范:

包含<iostream>在翻译单元中的结果应该好像<iostream>定义了ios_base::Init具有静态存储持续时间的实例.类似地,整个程序的行为应该至少有一个ios_base::Init具有静态存储持续时间的实例

这意味着如果我的代码看起来像这样:

// A.cpp
#include <iostream>
using namespace std;
unsigned long foo() {
    cerr << "bar"; 
    return 42;
}
Run Code Online (Sandbox Code Playgroud)

// B.cpp

using namespace std;
extern unsigned long foo();

namespace {
unsigned long test() {
    int id = foo();
    return id;
}

unsigned long id = test();
}


int main() {
     return 0;
}
Run Code Online (Sandbox Code Playgroud)

那么我应该安全地打电话,cerr不存在静态初始化惨败的风险.

不幸的是,代码段错误......为什么?我不认为gcc 6.2.1决定忽略C++ 11规范,而且我包含<iostream>在A.cpp中.根据规范,它应该足够了.

c++ static static-order-fiasco c++11

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

std :: merge不能与std :: async一起使用

我想在一个单独的线程中合并两个向量

int main()
{
    vector<int> a(100);
    vector<int> b(100);
    vector<int> c(200);
    std::async(std::launch::async, std::merge, a.begin(), a.end(), b.begin(),
               b.end(),
               c.begin());
}
Run Code Online (Sandbox Code Playgroud)

这不编译

main.cpp: In function ‘int main()’:
main.cpp:17:25: error: no matching function for call to ‘async(std::launch, <unresolved overloaded function type>, std::vector<int>::iterator, std::vector<int>::iterator, std::vector<int>::iterator, std::vector<int>::iterator, std::vector<int>::iterator)’
                c.begin())
                         ^
In file included from main.cpp:4:0:
/usr/include/c++/6.2.1/future:1709:5: note: candidate: template<class _Fn, class ... _Args> std::future<typename std::result_of<typename std::decay<_Tp>::type(typename std::decay<_BoundArgs>::type ...)>::type> std::async(std::launch, _Fn&&, _Args&& ...)
     async(launch __policy, _Fn&& __fn, _Args&&... __args)
     ^~~~~
/usr/include/c++/6.2.1/future:1709:5: note:   template argument deduction/substitution failed:
main.cpp:17:25: …
Run Code Online (Sandbox Code Playgroud)

c++ c++11

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

如何计算两倍的平均值,以使总误差最小?

假设我们有很多双打,例如N == 1000000

array<double, N> arr;
Run Code Online (Sandbox Code Playgroud)

有两种幼稚的方法来计算平均值。第一

double result = 0;
for (double x : arr) {
    result += x;
}
result /= arr.size();
Run Code Online (Sandbox Code Playgroud)

当值的总和很大时,这可能是不准确的。浮点数然后失去精度。

另一种方法是:

double result = 0;
for (double x : arr) {
    result += x / arr.size();
}
Run Code Online (Sandbox Code Playgroud)

当数字较小时,这可能会失去精度。

是否有任何故障安全方法来计算浮点数的简单平均值?赞赏仅使用标准库的解决方案。

c++ floating-point

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

QML - Q_INVOKABLE函数

我有QML的问题,调用Q_INVOKABLE函数.虽然我将功能标记为Q_INVOKABLE但我遇到了错误

TypeError: Result of expression 'azdownloader.setData' is not a function
TypeError: Result of expression 'azdownloader.perform' is not a function
Run Code Online (Sandbox Code Playgroud)

我有这门课:

typedef QString lyricsDownloaderString;

class lyricsDownloader : public QObject
{
public:
    Q_INVOKABLE virtual short perform() = 0;
    Q_INVOKABLE inline void setData(const string & a, const string & t); // set artist and track
 // some other data

protected:
    lyricsDownloader(const string & a, const string & t ) : artist(a), track(t) {} 
  /*other data*/
};

class AZLyricsDownloader : public lyricsDownloader
{
public: …
Run Code Online (Sandbox Code Playgroud)

c++ qt qml qt-quick

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

检测按下并按住 QML 中的按钮

我想在用户按住 Button 时打开上下文菜单(为了方便起见,我使用 Button)。如果我做

    Button
    {
        text: model.ualabel

        MouseArea
        {
            preventStealing: true
            anchors.fill: parent
            onPressAndHold: uaContextMenu.open()
        }

        ContextMenu
        {
            id: uaContextMenu
            MenuLayout
            {
                MenuItem { /**/ } 
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

然后负责 pressAndHold 的 MouseArea 会窃取所有手势,即使无法单击 Button。我究竟做错了什么?我正在使用 Qt 4.7 并导入QtQuick 1.1com.nokia.meego 1.0

谢谢

qt menu qt4 button qml

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

可变参数模板不适用于初始化列表

我创建了一个工厂功能模板:

template <typename M, typename... Args>
std::shared_ptr<M> create(Args... args)
{
    return std::make_shared<M>(args...);
}
Run Code Online (Sandbox Code Playgroud)

还有一个简单的容器:

struct Group {
    std::vector<int> vec;
    Group(std::initializer_list<int> il) : vec(il) {}
};
Run Code Online (Sandbox Code Playgroud)

然后我尝试创建一个组

int main()
{
    auto gr = create<Group>({1, 2, 3});
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

这不会编译,

error: no matching function for call to 'create'
    auto gr = create<Group>({1, 2, 3});
candidate function not viable: requires 0 arguments, but 1 was provided
std::shared_ptr<M> create(Args... args)
                   ^
Run Code Online (Sandbox Code Playgroud)

但是如果我使用一个临时变量:

int main(int argc, char *argv[])
{
    std::initializer_list<int> il = {1, 2, …
Run Code Online (Sandbox Code Playgroud)

c++ variadic-functions variadic-templates c++11

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