小编Mar*_*ing的帖子

使用myclass :: operator <(myclass&other)对std :: list <myclass*>进行排序

我有一个std::list<myclass*>,在我的课堂上,我已经myclass::operator<(myclass &other)定义了.

我使用该std::list.sort()函数,但它不会更改该列表中的任何内容.也许它只是对指针进行排序?

如何对该列表中的实际项目进行排序?

c++ std

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

英特尔C++无法将`T**'转换为`T const*const*`,GCC可以

问题

扩展现有守则

我有一个数字库,设计时考虑到了一种"味道".现在我想概括一下.基本数据结构是"旋转器",它本身是一个多维矩阵.有许多函数可以采用这些旋转器的数组.广义函数需要为每种味道采用一个这样的旋转器阵列.

假设有一个功能,最低限度地执行以下操作:

void copy_spinor(Spinor *out, const Spinor *in) {
    std::cout << out << " " << in << "\n";
}
Run Code Online (Sandbox Code Playgroud)

我现在的概括是这样的:

void copy_spinor(Spinor *out[num_flav], const Spinor *const in[num_flav]) {
    std::cout << "Fwd: ";
    copy_spinor(out[0], in[0]);
}
Run Code Online (Sandbox Code Playgroud)

在实际代码中,有一个循环覆盖所有num_flav,但这不是真正需要这个演示.

据我所知,必须读取这个const Spinor *(in[num_flav]),因此in是一个指向一个可能num_flav元素数组的指针(或者是另一个数量因为foo[]只是*foo在一个函数参数中),类型指针指向const-spinor.

问题是它在使用a时没有编译Spinor *non_const[2] (没有const),请参阅我之前的问题.从答案那里我已经知道这不能编译,因为在函数内 copy_spinor,指针non_const[0]可以指向某个 const数组Spinor *.然后non_const会指向const数据.因此,这不起作用.

我的结论是,添加另一个 const将使其正确:

void …
Run Code Online (Sandbox Code Playgroud)

gcc icc c++11

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

Python和gettext的UTF-8错误

我在编辑器中使用UTF-8,因此这里显示的所有字符串都是文件中的UTF-8.

我有一个像这样的python脚本:

# -*- coding: utf-8 -*-
...
parser = optparse.OptionParser(
  description=_('automates the dice rolling in the classic game "risk"'), 
  usage=_("usage: %prog attacking defending"))
Run Code Online (Sandbox Code Playgroud)

然后我使用xgettext来解决所有问题并得到一个.pot文件,可以归结为:

"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"

#: auto_dice.py:16
msgid "automates the dice rolling in the classic game \"risk\""
msgstr ""
Run Code Online (Sandbox Code Playgroud)

之后,我使用msginit来获取de.po我填写的内容,如下所示:

"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"

#: auto_dice.py:16
msgid "automates the dice rolling in the classic game \"risk\""
msgstr "automatisiert das Würfeln bei \"Risiko\""
Run Code Online (Sandbox Code Playgroud)

运行脚本,我收到以下错误:

  File "/usr/lib/python2.6/optparse.py", line 1664, in print_help
    file.write(self.format_help().encode(encoding, "replace"))
UnicodeDecodeError: …
Run Code Online (Sandbox Code Playgroud)

python localization gettext

6
推荐指数
2
解决办法
4527
查看次数

从reStructuredText中提取字段列表

假设我有以下reST输入:

Some text ...

:foo: bar

Some text ...
Run Code Online (Sandbox Code Playgroud)

我想最终得到的是这样一个字典:

{"foo": "bar"}
Run Code Online (Sandbox Code Playgroud)

我试着用这个:

tree = docutils.core.publish_parts(text)
Run Code Online (Sandbox Code Playgroud)

它确实解析了字段列表,但我最终得到了一些伪XML tree["whole"]?:

<document source="<string>">
    <docinfo>
        <field>
            <field_name>
                foo
            <field_body>
                <paragraph>
                    bar
Run Code Online (Sandbox Code Playgroud)

由于treedict不包含任何其他有用的信息,而且只是一个字符串,我不知道如何解析reST文档中的字段列表.我该怎么办?

python restructuredtext docutils

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

是不是调用`list <T> :: end()`效率低下?

在C++编程书中,我看到了以下std::list迭代器:

for (iterator = list.start(); iterator != list.end(); iterator++)
Run Code Online (Sandbox Code Playgroud)

一直打电话效率不高list.end()吗?将结尾保存到另一个变量或者C++编译器(即g ++)会自动处理这个变量会更好吗?

c++ iterator

6
推荐指数
2
解决办法
554
查看次数

函数的三种不同定义,没有链接器错误; 怎么可能?

我有一些看起来非常不可能的东西.我有三个文件,每个文件似乎都包含完全相同的函数声明,虽然定义不同.

inst_dp_vec2.cc:

void loadSOAFVec(InstVector &ivector,
                 const FVec &ret,
                 const Address *a,
                 int soanum,
                 int soalen,
                 string mask) {
    if (soalen == 2) {
        ivector.push_back(new LoadFVec(ret, a, string("")));
    } else {
        printf("SOALEN = %d not supported at %s:%d\n", soalen, __FILE__,
               __LINE__);
        exit(1);
    }
}
Run Code Online (Sandbox Code Playgroud)

inst_dp_vec4.cc

void loadSOAFVec(InstVector &ivector,
                 const FVec &ret,
                 const Address *a,
                 int soanum,
                 int soalen,
                 string mask) {
    if (soalen == 4) {
        ivector.push_back(new LoadFVec(ret, a, string("")));
    } else if (soalen == 2) {
        ivector.push_back(new LoadHalfFVec(ret, a, …
Run Code Online (Sandbox Code Playgroud)

c++

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

使用AVX上的AVX2/AVX512内在函数编译C++代码

我有生产代码,其中包含为各种SIMD指令集实现的内核,包括AVX,AVX2和AVX512.可以在目标机器上为目标机器编译代码./configure --enable-proc=AVX CXXFLAGS="-mavx".

这也适用于暴露AVX内在函数的Travis CI.我想至少编译AVX2和AVX512版本,以查看是否所有文件都已签入.但似乎编译不同的ISA并不容易.

一个简单的AVX2测试程序:

#include <immintrin.h>

int main(int argc, char **argv) {
    __m256d a;
    __m256d b;
    __m256d c;

    _mm256_fnmadd_pd(a, b, c);
}
Run Code Online (Sandbox Code Playgroud)

在我的AVX机器(英特尔酷睿i5-2520M)上,它无法编译:

$ g++ -Wall -Wpedantic --std=c++11 cpp.cpp -mavx2
In file included from /usr/lib/gcc/x86_64-redhat-linux/6.3.1/include/immintrin.h:79:0,
                 from cpp.cpp:3:
/usr/lib/gcc/x86_64-redhat-linux/6.3.1/include/fmaintrin.h:143:1: error: inlining failed in call to always_inline '__m256d _mm256_fnmadd_pd(__m256d, __m256d, __m256d)': target specific option mismatch
 _mm256_fnmadd_pd (__m256d __A, __m256d __B, __m256d __C)
 ^~~~~~~~~~~~~~~~
Run Code Online (Sandbox Code Playgroud)

有没有办法编译代码?我不关心跑步,我只想要一个烟雾测试.

c++ gcc cross-compiling intrinsics

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

使用#pragma一次有什么危险?

现代C和C++编译器支持非标准的#pragma once预处理器指令,它与经典的头部保护器具有类似的用途:

#ifndef hopefully_unique_identifier_that_doesnt_hurt_the_code
#define hopefully_unique_identifier_that_doesnt_hurt_the_code
  // some code here
#endif
Run Code Online (Sandbox Code Playgroud)

一个问题,我知道,使用经典的方法是,一旦你包含一个标题,你必须#undef使用标题保护宏再次包含它(这样做,对我来说,是一个主要的代码气味,但那是除此之外).该方法也出现了同样的问题#pragma once,但没有允许多次包含标题的可能性.

经典方法的另一个问题是,您可能会意外地在不相关的位置定义相同的宏,因此要么不包括预期的标题,要么做一些其他令人讨厌的东西,这是我无法想象的.这在实践中相当容易避免,通过遵守某些约定,例如将宏基于类似UUID的对象(即随机字符串)或(不太理想的方法),基于文件的名称,它们在.

在现实生活中,我很少遇到任何这些潜在问题,所以我并不认为它们是主要问题.

我能想到的唯一潜在的现实生活问题#pragma once是,它不是一个标准的东西 - 你依赖的东西可能无处不在,即使它存在,在实践中,无处不在(*).

那么,#pragma once除了我已经提到过的问题之外,还有哪些潜在的问题?我是否过于相信在实践中,无处不在?

(*)只有少数人使用的一些次要编译器,被排除在外.

c c++ macros

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

如何将 URL 编码为 CakePHP 参数

我想创建一个用于添加书签的书签。因此,您只需单击Bookmark this Page书签中的JavaScript 代码段,您就会被重定向到该页面。

这是我当前的书签:

"javascript: location.href='http://…/bookmarks/add/'+encodeURIComponent(document.URL);"
Run Code Online (Sandbox Code Playgroud)

当我在 Bookmarklet 页面上单击它时,这会给我一个这样的 URL:

http://localhost/~mu/cakemarks/bookmarks/add/http%3A%2F%2Flocalhost%2F~mu%2Fcakemarks%2Fpages%2Fbookmarklet
Run Code Online (Sandbox Code Playgroud)

但是服务器不喜欢这样:

The requested URL /~mu/cakemarks/bookmarks/add/http://localhost/~mu/cakemarks/pages/bookmarklet was not found on this server.
Run Code Online (Sandbox Code Playgroud)

这给出了所需的结果,但对我的用例来说毫无用处:

http://localhost/~mu/cakemarks/bookmarks/add/test-string
Run Code Online (Sandbox Code Playgroud)

正在进行 CakePHP 典型的 mod_rewrite,它应该将最后一部分转换为我的BookmarksController::add($url = null)操作的参数。

我究竟做错了什么?

javascript php cakephp bookmarklet url-rewriting

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

使用ansible通过编程方式收集的事实

我想写一个Python程序,它使用Ansible给我的事实ansible HOST -m setup.

当我调用它时,我得到一个响应,使它只有几乎纯粹的JSON:

$ ansible localhost -m setup
localhost | success >> {
    // actual data
}
Run Code Online (Sandbox Code Playgroud)

有没有办法直接获得这个JSON响应而不解析shell输出(可能不太稳定)?我甚至可以直接在Python 3程序中使用Ansible吗?

python ansible ansible-facts

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