小编Cat*_*kul的帖子

是否可以创建一个函数指针来指向函数的`new`操作符/构造函数?

如果我想参数化创建一个对象,我当然可以创建一个在特定类上调用new并传出指针的函数.我想知道是否可以跳过该步骤并将函数指针传递给new运算符本身.

c++ function-pointers boost-bind new-operator

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

有没有办法在无头机器上使用硬件加速OpenGL的应用程序?

存在一类使用opengl来提供硬件加速但不基于GUI的应用程序.但是,在默认情况下,使用opengl似乎必须运行带有GLX的X服务器(在同一个虚拟终端上)才能使这些应用程序正常运行.

我的具体案例是试图在无头机器上使用gstreamer的gl插件,但我问的是一个更普遍的问题.

  • 有没有办法解决这个问题(尤其是在不修改原始代码的情况下)?

我一直在尝试使用framebuffer内核模块进行研究,但不是很远.

linux opengl command-line framebuffer hardware-acceleration

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

使用Bash将stdin重定向到来自不同的终端

我想知道如何将脚本的stdin从当前的xterm会话(即/ dev/pts/0)重定向到使用bash运行的那个/ dev/pts/1?我有一个打开3个xterm窗口的bash脚本,我想从其中一个窗口获取输入,我无法弄清楚如何做到这一点.任何帮助表示赞赏!谢谢.



编辑(从下面移动 - OP提交此澄清作为答案)

我想我应该澄清一下我想做什么.我将从一个pty开始一个脚本,让我们说它是/ dev/pts/3.这个脚本将打开3个终端,比方说:/ dev/pts/0,/ dev/pts/1和/ dev/pts/2.这3个新的ptys是用户将要看到的.该脚本要求用户输入一些内容,我希望将用户的输入输入/ dev/pty/1,程序应该从那里获取它的信息.但是我试图这样做但它不起作用.这是我的代码片段.

exec</dev/pts/1

echo
echo "Would you like to search for more info?" 1>/dev/pts/1
read answer

case $answer in
    y) echo "YES" ;;
    n) echo "NO"  ;;
    *) echo "y/n only!";;
esac
Run Code Online (Sandbox Code Playgroud)

最后的case语句只是一个小占位符,看看输入是否真的有效.

linux bash stdin

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

从列表中删除boost :: shared_ptr的正确方法是什么?

我有一个std::list,boost::shared_ptr<T>我想从中删除一个项目,但我只有一个T*类型的指针,它匹配列表中的一个项目.

但是我无法使用myList.remove( tPtr )我猜测因为shared_ptr没有==为其模板参数类型实现.

我的直接想法是尝试myList.remove( shared_ptr<T>(tPtr) )哪种语法正确,但它会因双重删除而崩溃,因为临时shared_ptr具有单独的use_count.

std::list< boost::shared_ptr<T> > myList;

T* tThisPtr = new T(); // This is wrong; only done for example code.
                       // stand-in for actual code in T using 
                       // T's actual "this" pointer from within T
{
   boost::shared_ptr<T> toAdd( tThisPtr ); // typically would be new T()
   myList.push_back( toAdd );
}

{
   //T has pointer to myList so that upon a certain action, …
Run Code Online (Sandbox Code Playgroud)

c++ boost stl smart-pointers

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

STL 或 BOOST 是否提供任何干净的方法来获得排序顺序而不重新排序原始序列?

例如,我想找到向量的排序顺序,而无需重新排序向量。

我可以想到几种方法来做到这一点,我想知道我是否缺少一些内置的 STL 或 BOOST 方法来做到这一点。

我想如果功能可用,代码最终会看起来像这样:

std::vector<float> unsortedSeq;
unsortedSeq.push_back( 1.1 );
unsortedSeq.push_back( 1.0 );
unsortedSeq.push_back( 0.5 );
unsortedSeq.push_back( 1.2 );
unsortedSeq.push_back( 1.15 );

std::list<std::size_t> sortOrder;

std::sort_indices( unsortedSeq.begin(), unsortedSeq.end(), sortOrder.begin() );

BOOST_FOREACH( std::size_t index, sortOrder )
{
    std::cout << index << "\n"
}



2
1
0
4
3
Run Code Online (Sandbox Code Playgroud)

任何人都知道任何 STL 或 BOOST-sims 会像我所问的那样简单地完成我的要求?

c++ sorting boost stl

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

是否可以从(Functor成员)函数签名中检索参数类型以便在模板中使用?

假设你有一个仿函数:

struct MyFunctor
{
    bool operator ()( int value )
    {
        return true;
    }
};
Run Code Online (Sandbox Code Playgroud)

是否可以检索仿函数成员的参数类型以便在模板中使用?以下是这个神话功能的用法:

template < typename FunctorType >
bool doIt( FunctorType functor, typename FunctorType::operator()::arg1 arg )
{
    return functor( arg );
}
Run Code Online (Sandbox Code Playgroud)

是否有一种有效的语法可以替代我的神话FunctorType::operator()::arg1

c++ templates functor function-signature

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

为什么clang ++和gcc/g ++产生不同的链接可执行文件

在编译和链接g ++和clang ++时,期望生成的可执行文件在链接方面的链接相同.

但是在某些情况下,尽管传入了相同的参数,但似乎clang ++可执行文件链接到比g ++更多的库.

这可能会导致功能差异,尤其是在加载和卸载时自动执行的动态链接库方面.

为什么会这样?

c++ linker gcc clang

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

为什么Mercurial的汞修复这么慢?

rebasemercurial 的扩展提供了与git相似的功能rebase

让rebase执行大约需要4分钟(〜240 s)才能完成100次提交。

在我的想象中,这应该是非常快的,最多只有几秒钟,但是显然我缺少了一些东西。

是什么导致了这么长时间?提交本身是否非常昂贵?

git version-control performance mercurial rebase

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

定义_HAS_TRADITIONAL_STL以启用STL功能是否安全?

在试图在VS2008项目中使用std::select1st<functional>,我发现它是由_HAS_TRADITIONAL_STL警卫提供的.

  • 是否有一个原因?

  • _HAS_TRADITIONAL_STL在包括之前简单定义是否安全<functional>

c++ windows winapi stl visual-studio-2008

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

取消引用指针

当我在fill函数中打包结构并传递指针以发送如何取消引用它时,如何取消引用指针?因为我在我所做的事情中得到了分段错误

#include<stdio.h>
struct xxx
{
    int x;
    int y;
};

void fill(struct xxx *create)
{
    create->x = 10;
    create->y = 20;
    send(*create);
}


main()
{
    struct xxx create;
    fill(&create);
}

send(struct xxx *ptr)
{
    printf("%d\n",ptr->x);
    printf("%d\n", ptr->y);
}
Run Code Online (Sandbox Code Playgroud)

c pointers

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