小编Luk*_*uka的帖子

从C++ 11中的线程返回一个值

在C++ 11中从线程返回值的最有效方法是什么?

vector<thread> t(6);

for(int i = 0; i < 6; i++)
    t[i] = thread(do_c);

for(thread& t_now : t)
    t_now.join();

for(int i = 0; i < 6; i++)
    cout << /*the return of function do_c*/
Run Code Online (Sandbox Code Playgroud)

此外,如果更改将有利于性能,请随时推荐另一个线程std::thread.

c++ c++11

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

我需要初始化位吗?

我有一个char,我想将第1位设置为1,最后一位设置为1.我可以使用以下代码执行此操作:

char c;
c |= 1 << 0;
c |= 1 << 7;
cout << c;
Run Code Online (Sandbox Code Playgroud)

问题很简单:我只是将第1位和第8位设置为1.我是否需要将第2-7位设置为0或默认情况下这样做?如果我保留上面的代码,是否有任何未定义行为的可能性?

c++

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

减少图形上的数据点?

我有一个巨大的图表,有数千个数据点。

按原样绘制图形会造成线条过多的混乱。

问题:减少数据点的最佳方法是什么?

示例:假设我的图表有 1000 个数据点,我需要将其设置为 100。

我试过:

a) 取 10 个数据点并根据这些数据的平均值创建一个数据点。这种方法产生了可怕的结果,而且图表看起来像别的东西。

b) 取 10 个数据点中的第一个。这比 a 好,但图形仍然不同。

algorithm

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

提前进行位操作,在任何位置留下空位

我有两个字符,ab.我试图15 bit int在这些字符中存储一个,但我必须保持第一个字符的第8位不变.

我知道如何在没有第8个字符的差距的情况下做到这一点:

unsigned int num = 32767;
unsigned char a = num;
unsigned char b = (num & 0xFF00) >> 8;

cout << "The num is: " << (unsigned int)a + ((unsigned int)b << 8);
Run Code Online (Sandbox Code Playgroud)

有人可以帮我理解这是如何工作的,所以我可以学会在任何位置留下任何位或空位?

c++

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

va_list中的未知字符?

#include <stdio.h>
#include <stdarg.h>

void s(const char* param, ...)
{
    va_list arguments;
    va_start (arguments, param);
    const char* param_now = va_arg(arguments, const char*);

    while(param_now != NULL)
    {
        printf("%s", param_now);
        param_now = va_arg(arguments, const char*);
    }

    va_end (arguments);
}

int main()
{
    s("one", "two");
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

为什么我上面的代码不起作用并显示未知符号而不是一个和两个?

编辑:找到一种非常聪明的方法来避免在最后包含NULL:

void add_s(const char* param, ...)
{
    return s(param, NULL);
}
Run Code Online (Sandbox Code Playgroud)

c++

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

线程:罚款10,崩溃10000

有人可以解释为什么以下代码崩溃:

int a(int x)
{
    int s = 0;
    for(int i = 0; i < 100; i++)
        s += i;
    return s;
}

int main()
{
    unsigned int thread_no = 10000;
    vector<thread> t(thread_no);

    for(int i = 0; i < 10; i++)
        t[i] = std::thread(a, 10);

    for(thread& t_now : t)
        t_now.join();

    cout << "OK" << endl;
    cin.get();
}
Run Code Online (Sandbox Code Playgroud)

但有10个线程吗?我是多线程的新手,根本不明白发生了什么?!

c++

0
推荐指数
1
解决办法
2627
查看次数

字符串类构造函数的安全性

以下安全吗?

string s;
s += "dsgdf";
cout << s;
Run Code Online (Sandbox Code Playgroud)

字符串是自动初始化的""还是我需要这样做?

c++ string

0
推荐指数
1
解决办法
42
查看次数

获取字符串中的字符数?

我有一个应用程序,接受最多255个字符的UTF-8字符串.

如果字符是ASCII,(字符数==大小,以字节为单位).

如果字符不是全部ASCII并且包含日语字母,则给定大小(以字节为单位),如何获取字符串中的字符数?

输入:char *data, int bytes_no
输出:int char_no

c++ utf-8 char

0
推荐指数
1
解决办法
682
查看次数

标签 统计

c++ ×7

algorithm ×1

c++11 ×1

char ×1

string ×1

utf-8 ×1