小编abe*_*ier的帖子

使用成员函数启动线程

我试图std::thread用一个不带参数和返回的成员函数构造一个void.我无法弄清楚任何有效的语法 - 编译器无论如何都会抱怨.实现的正确方法是什么,spawn()以便返回std::thread执行的test()

#include <thread>
class blub {
  void test() {
  }
public:
  std::thread spawn() {
    return { test };
  }
};
Run Code Online (Sandbox Code Playgroud)

c++ multithreading c++11

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

从水平ProgressBar中删除垂直填充

默认情况下,ProgressBar在条形本身的上方和下方都有一定的填充.有没有办法删除这个填充,以便只有最后的栏?

android android-progressbar

114
推荐指数
12
解决办法
3万
查看次数

gcc std :: unordered_map的执行速度慢吗?如果是这样 - 为什么?

我们正在用C++开发一个高性能的关键软件.我们需要一个并发的哈希映射并实现一个.所以我们写了一个基准来弄清楚我们的并发哈希映射与之比较慢多少std::unordered_map.

但是,std::unordered_map似乎是非常慢......所以这是我们的微基准测试(对于并发映射,我们产生了一个新的线程,以确保锁定不会被优化掉,并注意我从来没有inser 0因为我也基准测试google::dense_hash_map,需要一个空值):

boost::random::mt19937 rng;
boost::random::uniform_int_distribution<> dist(std::numeric_limits<uint64_t>::min(), std::numeric_limits<uint64_t>::max());
std::vector<uint64_t> vec(SIZE);
for (int i = 0; i < SIZE; ++i) {
    uint64_t val = 0;
    while (val == 0) {
        val = dist(rng);
    }
    vec[i] = val;
}
std::unordered_map<int, long double> map;
auto begin = std::chrono::high_resolution_clock::now();
for (int i = 0; i < SIZE; ++i) {
    map[vec[i]] = 0.0;
}
auto end = std::chrono::high_resolution_clock::now();
auto elapsed = std::chrono::duration_cast<std::chrono::milliseconds>(end - begin);
std::cout << "inserts: " << …
Run Code Online (Sandbox Code Playgroud)

c++ stl hashmap concurrenthashmap c++11

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

用于C++的P2P库

是否有用于P2P网络的任何良好的跨平台C++库(最好是UDP,但TCP也可以工作).最初我打算使用libjingle,但由于它们没有提供任何预编译库并且运行一个非常混乱的构建系统,所以我现在把它放在一边太复杂了.

c++ p2p

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

通过Android中的OpenMAX访问摄像头

我目前正试图弄清楚如何通过Android 4.0中的OpenMAX访问相机.文档对我来说还不够,所以我目前很难找到如何XADataSource为以下调用检索正确的文档.

(*_engine)->CreateMediaRecorder(_engine,
                                &_mediaRecorder, //pRecorder
                                nullptr, //pAudioSrc
                                XADataSource *, //pImageVideoSrc
                                XADataSink *, //pDataSnk
                                XAuint32, // numInterfaces
                                const XAInterfaceID *, //pInterfaceIds
                                const XAboolean *, //pInterfaceRequired
);
Run Code Online (Sandbox Code Playgroud)

请不要让我使用Java - "答案".

c android android-ndk openmax

27
推荐指数
1
解决办法
2713
查看次数

生锈的嵌套结构

当我试图宣布

struct Test {
    struct Foo {}
}
Run Code Online (Sandbox Code Playgroud)

__CODE__抱怨:__CODE__结构__CODE__.我无法在任何一个方向找到任何文档,因此嵌套结构甚至支持生锈?

struct rust

27
推荐指数
1
解决办法
9986
查看次数

保留后使用std :: vector :: data

我有一个std::vector在我称之为reserve一个较大的值.然后我检索data().

由于迭代data然后崩溃,我想知道这是否是允许的.被reserve强制更新data已分配内存的范围是多少?

c++ vector stdvector language-lawyer

12
推荐指数
2
解决办法
1673
查看次数

缺少shared_ptr和weak_ptr之间的相等性

虽然我不明白为什么没有operator==shared_ptrunique_ptr,我不知道为什么有没有为shared_ptrweak_ptr.特别是因为你可以创建weak_ptr一个引用shared_ptr.我认为99%的时间都是你想要的lhs.get() == rhs.get().我现在要继续向我的代码介绍,除非有人能给我一个充分的理由,为什么不应该做这样的事情.

c++ shared-ptr c++11

11
推荐指数
1
解决办法
3213
查看次数

无限不是constexpr

我想测试无限远附近浮子的行为.为此我天真地写了下面的代码:

#include <limits>
#include <iostream>

int main() {
    constexpr float foo = std::numeric_limits<float>::infinity() - std::numeric_limits<float>::epsilon();
    std::cout << foo << std::endl;
    return foo;
}
Run Code Online (Sandbox Code Playgroud)

对我来说有趣的部分是,这在GCC 7.2中编译得很好但在Clang 5上失败(抱怨非constexpr赋值foo).

据我所知,因为C++ 11,std::numeric_limits<float>::infinity()并且infinity()都是constexpr,所以我不知道问题出在哪里了锵.


编辑1:

删除不必要的static_assert.感谢您指出除以0. IMO引用的标准文本在这里不适用!?

强制性的Godbolt链接:https://godbolt.org/g/Nd5yF9

编辑2:

请注意,相同的行为适用于:

constexpr float foo = std::numeric_limits<float>::infinity() - 100.0f;
Run Code Online (Sandbox Code Playgroud)

c++ c++17

11
推荐指数
1
解决办法
540
查看次数

boost :: mpl :: for_each没有实例化

以下面的例子,我想知道是否有一个替代品boost::mpl::for_each,它可以在没有任何参数的情况下调用Functor.

#include <boost/mpl/vector.hpp>
#include <boost/mpl/for_each.hpp>

struct EasyFixEngineA { static const char* const name() { return "a"; } };
struct EasyFixEngineB { static const char* const name() { return "b"; } };

struct Registrator {
    // Would prefer a template<class T> void operator()()
    template<class T> void operator()(T t) {
        RegisterInFactory<EasyFixEngine, T> dummy(T::name());
    }
};

// ...
typedef boost::mpl::vector<EasyFixEngineA,EasyFixEngineB> Engines;
boost::mpl::for_each<Engines>(Registrator());
Run Code Online (Sandbox Code Playgroud)

它似乎for_each是默认实例化类型.

c++ boost boost-mpl

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