小编nak*_*iya的帖子

如何转发在命名空间std中声明模板类?

#ifndef __TEST__
#define __TEST__

namespace std
{
    template<typename T>
    class list;
}

template<typename T>
void Pop(std::list<T> * l)
{
    while(!l->empty())
        l->pop();
}

#endif
Run Code Online (Sandbox Code Playgroud)

并在我的主要使用该功能.我收到错误.当然,我知道有更多的模板参数std::list(我认为是分配器).但是,这是不重要的.我是否必须知道模板类的完整模板声明才能转发声明它?

编辑:我之前没有使用指针 - 这是一个参考.我会用指针试一试.

c++ templates g++

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

如何查看目标文件中的符号?

如何查看.o文件中的符号?nm对我不起作用.我用g ++/linux.

c++ linux g++ object-files

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

如何在g ++中使用配置文件引导的优化?

另外,有人能指点我这个主题的好教程吗?我找不到任何东西.

c++ optimization g++

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

如何检查是否设置了std :: string?

如果使用a char*,我可以将其初始化为NULL,然后通过进行比较来检查它是否已设置.怎么做同样的事情std::string?如何检查字符串是否设置?

编辑:如果我设置的字符串也是空的怎么办?我是否必须使用额外的标志来检查是否std::string设置了?

c++

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

如何提高此代码的性能?

感谢来自这里的人们的帮助,我能够获得塔斯马尼亚骆驼拼图工作的代码.然而,它非常慢(我想.我不确定,因为这是我在Python中的第一个程序).在代码底部运行的示例需要很长时间才能在我的机器中解决:

dumrat@dumrat:~/programming/python$ time python camels.py
[['F', 'F', 'F', 'G', 'B', 'B', 'B'], ['F', 'F', 'G', 'F', 'B', 'B', 'B'],
 ['F', 'F', 'B', 'F', 'G', 'B', 'B'], ['F', 'F', 'B', 'F', 'B', 'G', 'B'],
 ['F', 'F', 'B', 'G', 'B', 'F', 'B'], ['F', 'G', 'B', 'F', 'B', 'F', 'B'],
 ['G', 'F', 'B', 'F', 'B', 'F', 'B'], ['B', 'F', 'G', 'F', 'B', 'F', 'B'],
 ['B', 'F', 'B', 'F', 'G', 'F', 'B'], ['B', 'F', 'B', 'F', 'B', 'F', 'G'],
 ['B', 'F', 'B', 'F', 'B', …
Run Code Online (Sandbox Code Playgroud)

python optimization performance time-complexity

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

如何获得成功的binary_search的迭代器?

我想得到我正在测试的元素的迭代器binary-search.但它只返回一个bool指示是否找到该值的指示.如何获得迭代器?

c++ algorithm stl binary-search

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

在构造函数初始化列表中调用函数是否可以?

我的直觉是不是.我遇到以下情况:

class PluginLoader
{
   public:
      Builder* const p_Builder;
      Logger* const p_Logger;

      //Others
};

PluginLoader::PluginLoader(Builder* const pBuilder)
   :p_Builder(pBuilder), p_Logger(pBuilder->GetLogger())
{
   //Stuff
}
Run Code Online (Sandbox Code Playgroud)

或者我应该更改构造函数并Logger* const从构造的位置传递一个PluginLoader

c++ constructor variable-initialization

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

为什么以及如何在C++中使用命名空间?

我以前从来没有为我的代码使用名称空间.(除了使用STL功能)

  1. 除了避免名称冲突之外,还有其他原因要使用命名空间吗?
  2. 我是否必须在命名空间范围内包含声明和定义?

c++ namespaces

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

如何在double变量中检查inf(和|或)NaN

请考虑以下代码:

#include <iostream>
#include <cstdio>
#include <cstring>

using namespace std;

template<class T>
bool IsNaN(T t)
{
    return t != t;
}

int main(int argc, char**argv)
{
    double d1, d2;
    sscanf(argv[1], "%f", &d1);
    sscanf(argv[2], "%f", &d2);

    double dRes = d1/d2;

    cout << "dRes = " << dRes << "\n";

    if(IsNaN(dRes))
        cout << "Is NaN\n";
    else
        cout << "Not NaN\n";

}
Run Code Online (Sandbox Code Playgroud)

几个问题:

  1. 当我传递0和0作为参数时,它输出dRes = inf.但我期待dRes = NaN或类似的东西.
  2. NaN在双变量中是否可表示?就此而言,任何变数?
  3. 当我将d1,d2,dRes的数据类型更改为int并传递0和0时,我得到了一个Floating exception.有什么不同?
  4. 如何检查变量的值是否等于inf

c++ linux floating-point g++

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

由多重继承引起的"无法访问的直接基础"

剧透警报:也许是一个愚蠢的问题.:)

#include <iostream>

using namespace std;

class Base
{
    public:
        virtual void YourMethod(int) const = 0;
};

class Intermediate : private Base
{
    public:
        virtual void YourMethod(int i) const
        {
            cout << "Calling from Intermediate" << i << "\n";
        }
};

class Derived : private Intermediate, public Base
{
    public:
        void YourMethod(int i) const
        {
            cout << "Calling from Derived : " << i << "\n";
        }
};

int main()
{
}
Run Code Online (Sandbox Code Playgroud)

有人可以向我解释为什么会抛出编译器警告:

main.cpp:21: warning: direct …
Run Code Online (Sandbox Code Playgroud)

c++ multiple-inheritance

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