小编Thi*_*ilo的帖子

在模板类中调用模板函数

免责声明:以下问题可能非常简单,我可能会对第一个答案感到震惊.此外,我想为任何重复的问题道歉 - 句法问题并不总是容易识别是口头解释,因此搜索它们并不容易......

但足够了.我有两个模板化的类,其中一个有模板化的成员函数,另一个类试图调用该函数.最小的错误生成示例如下所示:

#include <iostream>

template <typename T>
class Foo {
public:
    Foo() {
    }

    template <typename outtype>
    inline outtype bar(int i, int j, int k = 1) {
        return k;
    }

};

template <typename T>
class Wrapper {
public:
    Wrapper() {
    }

    double returnValue() {
        Foo<T> obj;
        return obj.bar<double>(1,2); // This line is faulty.
    }

};

int main() {
    Wrapper<char> wr;
    double test = wr.returnValue();
    std::cout << test << std::endl;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

在编译时,这会导致

expected primary-expression before 'double' …
Run Code Online (Sandbox Code Playgroud)

c++ templates

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

C++ 11可变参数模板:从变量矢量列表返回元组

我想写一些类似于python zip的东西(http://docs.python.org/2/library/functions.html).zip应该接收不同类型的可变数量的向量,并返回元组的向量,截断为最短输入的长度.

例如

x = [1, 2, 3]
v = ['a', 'b']
Run Code Online (Sandbox Code Playgroud)

我希望输出是一个向量 [ <1, 'a'>, <2, 'b'>]

我如何在C++ 11中执行此操作?

c++ templates variadic-templates c++11

14
推荐指数
2
解决办法
2558
查看次数

强制MATLAB重新加载mex函数中链接的库

我有一个Mex函数,比如说myfunction.mexmaci64(这是OS X上的正确结尾).

现在,myfunction与库相关联mylibrary.dylib.mex文件和库都位于同一文件夹中.

现在,每当我改变某些内容时mylibrary,MATLAB都不会重新加载新的库版本,而是使用旧版本,直到我重新启动MATLAB.在进行开发和调试工作时,这非常有用.有没有办法强制MATLAB重新加载库而无需重新启动应用程序?

注意:将库静态链接到mex函数很容易.但是,当我将相同的库链接到相当多的mex文件时,我宁愿保留我的单个共享库以减少编译时间和数据冗余.

编辑:

关于讨论的clear mex帮助:

[~, loaded_mexes] = inmem('-completenames'); % get canonica
Run Code Online (Sandbox Code Playgroud)

返回包含所有已加载的mex文件的列表.此列表不包含链接库,但仅包含mex文件本身.使用clear mex成功清空此列表但不卸载mylibrary- 再次运行mex函数仍然会产生与旧共享库相同的输出.

matlab mex

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

GCC优化在运行时产生"未定义的符号"

我现在有一个让我感到困惑的问题:我有一些用C++编写的软件,它链接到C中的库.我使用通常的头文件类

extern "C" {
    #include <libheader.h>
}
Run Code Online (Sandbox Code Playgroud)

只要我不使用gcc的优化,一切正常.一旦我打开偶数-O1,即第一个优化级别,在运行期间我得到一个来自该库的符号的"未定义符号"错误.但是,该名称已经过了名称重整,应该是禁用的原因extern "C".

如果这很重要,则会内联调用有问题符号的函数.使用的编译器是gcc 4.4.3.

老实说,我甚至不知道要搜索什么,所以如果你们中的一个人能给我一些这种行为的理由,我将非常感激.

感谢您的支持.

c++ optimization gcc

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

无需重新编译主程序即可对共享对象进行配置

我目前正在开发一个用于加载到PostgreSQL的共享lilbrary(作为C语言函数,请参见此处).现在我想在不重新编译PostgreSQL本身的情况下分析这个库中的函数.

我尝试使用callgrind

valgrind --tool=callgrind path/to/postgres arguments-to-postgres
Run Code Online (Sandbox Code Playgroud)

这给了我PostgreSQL本身的分析信息,但无法记录我感兴趣的共享库.

我也试过sprof,但我不知道如何让那个工作.

任何想法都会受到高度关注.

PS:请不要建议只在调试器中暂停应用程序.功能运行时间低于0.01秒我需要更多详细结果.

c++ postgresql profiling shared-libraries callgrind

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

安装xcode后git push.default设置

我不确定这是由我的xcode安装造成的,但这是我的计算机在git停止工作之前发生的唯一重大变化.我还在github上发现了一些建议这可能是问题的信息.无论如何,每当我尝试拉,克隆或推送时,我都会收到以下消息:

error: Malformed value for push.default: simple
error: Must be one of nothing, matching, tracking or current.
fatal: bad config file line 3 in /Users/mbc/.gitconfig
Run Code Online (Sandbox Code Playgroud)

如果我跑git --version,我得到这个:git版本1.7.10.2(Apple Git-33)

我尝试安装最新版本,但即使安装程序声称成功,git --version也没有改变.

也许git安装在两个不同的地方?which git给了我,/usr/bin/git但我不确定git应该在哪里,所以这还不是特别有用.

有任何想法吗?

git macos xcode

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

保留 Spark 结构化流中给定键的最后一行

与 Kafka 的日志压缩类似,有很多用例需要仅保留给定键的最后更新,并将结果用于例如连接数据。

如何将其存档在 spark 结构化流中(最好使用 PySpark)?

例如假设我有桌子

key    | time   | value
----------------------------
A      | 1      | foo
B      | 2      | foobar
A      | 2      | bar
A      | 15     | foobeedoo
Run Code Online (Sandbox Code Playgroud)

现在我想保留每个键的最后一个值作为状态(带水印),即有权访问数据帧

key    | time   | value
----------------------------
B      | 2      | foobar
A      | 15     | foobeedoo
Run Code Online (Sandbox Code Playgroud)

我可能想加入另一个流。

优选地,这应该在不浪费一个支持的聚合步骤的情况下完成。我想我需要一种dropDuplicates()反向顺序的函数。

请注意,这个问题是关于结构化流媒体以及如何在不浪费聚合步骤的构造的情况下解决问题的(因此,所有带有窗口函数或最大聚合的东西都不是一个好的答案)。(如果您不知道:结构化流媒体现在不支持链式聚合。)

apache-spark pyspark spark-structured-streaming

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

将文件读入具有部分未知文件名的R

有没有办法将文件读入R,我不知道完整的文件名.就像是.

read.csv("abc_*")
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我不知道之后的完整文件名 abc_

r

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

使CMake使用gccfilter

GCCFilter是一个简洁的perl脚本,可以为GCC的输出着色,从而使调试更有趣,更重要的是,更快.

您可以通过调用将GCCFilter与CMake生成的Makefile一起使用

gccfilter -a -c make
Run Code Online (Sandbox Code Playgroud)

但是,这种方法有一些缺点:CMake状态信息的延迟输出,CMake命令中没有颜色是最明显的.

问题:是否有写一些CMake的模块,搜索的方式gccfilter,如果编译器是gcc,如果检查,说COLOR_CXX是设置(相当容易了这里),然后告诉CMake的,以取代所有调用gccgccfilter -a -c gcc.

CMake提供变量CMAKE_CXX_COMPILER,但更改此变量将禁止CMake找到正确的包含路径等.是否有一些变量我们可能会project()在每次调用之前的前缀命令后更改gcc

gcc cmake gccfilter

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

Openlayers:this.addOptions不是一个函数

我目前正在尝试让OpenLayers显示WMS-Layer.这样做我遇到了一个我无法解决的问题.这甚至可能是OpenLayers中的一个错误,但在他们的跟踪系统填写适当的错误报告之前,我想确保错误不是我的.

这是产生错误的最小示例:

<html>
<head>
    <script src="../javascript/openlayers/lib/OpenLayers.js"></script>
</head>
<body>
    <div style="width:100%; height:100%" id="map"></div>
    <script defer="defer" type="text/javascript">
        var map = new OpenLayers.Map( 'map' );

        var layer = OpenLayers.Layer.WMS( "mymap", 
                                          "http://192.168.1.1/cgi-bin/mapserv",
                                          {layers: 'buildings', map: 'map=/var/public/maps/mapfile.map'}
                    );
        map.addLayer(layer);
        map.zoomToMaxExtent();
    </script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

这给出了错误

this.addOptions is not a function
Run Code Online (Sandbox Code Playgroud)

使用Firefox 5.0和Ubuntu Natty.

我也可以提供相应的mapfile,但错误看起来像JavaScript-问题因此,只要没有人请求它,我将免除你的细节.

感谢您的支持和想法.

wms openlayers

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