小编Ern*_*own的帖子

包含std :: threads的元素向量

我有一个类Tester包含std:thread的对象,和std::vectorTester.我明白我不能复制线程,所以这是不可能的push_back,但为什么emplace_back不工作?我的代码中的副本在哪里?

#include <iostream>
#include <thread>
#include <vector>
#include <functional>
#include <unistd.h>

class Tester
{
public:
    Tester(std::function<void(void)> func) : 
        th(func)
    {
    }

    ~Tester()
    {
        th.join()
    }

private:
    std::thread th;
};

std::vector<Tester> testers;

void InnerHelloWorld()
{
    std::cout << "Hello from the inner word!\n";
}

int main() {
    std::cout << "Hello World!\n";

    for(size_t i = 0 ; i < 4 ; i++)
    {
        testers.emplace_back(InnerHelloWorld);
    }

    sleep(1);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c++ multithreading c++11

8
推荐指数
1
解决办法
735
查看次数

用原始数据填充std :: vector

我需要用原始数据填充向量,有时是2个字节,有时是8个...我最终得到了这个模板功能:

template <typename T>
void fillVector(std::vector<uint8_t>& dest, T t)
{
    auto ptr = reinterpret_cast<uint8_t*>(&t);
    dest.insert(dest.end(),ptr,ptr+sizeof(t));
}
Run Code Online (Sandbox Code Playgroud)

这样,我可以像这样填充向量:

fillVector<uint32_t>(dst,32bitdata);
fillVector<uint16_t>(dst,16bitdata);
Run Code Online (Sandbox Code Playgroud)

我想知道标准库中是否已经存在类似的东西?

c++ c++11

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

标签 统计

c++ ×2

c++11 ×2

multithreading ×1