小编San*_*ker的帖子

Does std::unordered_map operator[] do zero-initialization for non-exisiting key?

According to cppreference.com, std::map::operator[] for non-existing value does zero-initialization.

However, the same site does not mention zero-initialization for std::unordered_map::operator[], except it does have an example which relies on this.

Of course this is just a reference site, not the standard. So, is the code below ok or not?

#include <unordered_map>
int main() {
    std::unordered_map<int, int> map;
    return map[42];     // is this guaranteed to return 0?
}
Run Code Online (Sandbox Code Playgroud)

c++ unordered-map zero-initialization

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

如何快速设置64位整数中的全1之后的9位

我正在编写一个C ++程序,并且需要一个在所有现有的“ 1”之后将所有9位都设置为1的函数。

也就是说,我要编写一个void set10BitsFull(int64_t& n)将整数“ int64_t n = 0b...1000000000...set10BitsFull(n)转换n为“ 0b...1111111111...” 的函数。

(更新)将输入整数的位稀疏地设置为1,并且两个1之间至少有10位距离。对于样本输入0x20000200,期望的输出为0x3FF003FF。最后1个位之后将至少有9位0。最左边的10位将始终为零。

这是我对该功能的实现

/**
 * Inline function that set 10 bits to 1 after each set 1
 * i.e.,
 * ......1000000000...... -> ......1111111111.......
 *
 * @param n
 *      pointer of input number
 */
inline void set10BitFull(int_fast64_t *n) {
    // n = 1000000000
    *n |= (*n >> 1); // n = 1100000000
    *n |= (*n >> 2) | …
Run Code Online (Sandbox Code Playgroud)

c++ bit-manipulation

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

我是否应该包含<vector>,即使它已被<regex>或其他人包含在内?

我是否应该包括,例如<vector>它已被包含在其中<regex>

我有一个<regex>包括,似乎也包括<vector>,所以我不必包括<vector>.是否认为明确包括更好的风格<vector>

c++ c++11

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

如何将结构作为二进制数据写入golang中的文件?

以下 C 代码的 golang 等价物是什么?

fwrite(&E, sizeof(struct emp), n, f);
Run Code Online (Sandbox Code Playgroud)

我尝试使用

[]byte(i)
Run Code Online (Sandbox Code Playgroud)

转换它,但这似乎行不通。

file go

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

MQQueueManager消息池

我过去使用RabbitMq作为MessageQueue,在收到消息时触发事件真的很简单。

我查看了IBM安装程序随附的.NET源,但是发现一种不好的方法来处理它。查看示例SimpleSubscribe可以完成这样的工作

// getting messages continuously
for (int i = 1; i <= numberOfMsgs; i++)
{
    // creating a message object
    message = new MQMessage();

    try
    {
        topic.Get(message);
        Console.WriteLine("Message " + i + " got = " + message.ReadString(message.MessageLength));
        message.ClearMessage();
    }
    catch (MQException mqe)
    {
        if (mqe.ReasonCode == 2033)
        {
            ++time;
            --i;
            Console.WriteLine("No message available");
            Thread.Sleep(1000);
            //waiting for 10sec
            if (time > 10)
            {
                Console.WriteLine("Timeout : No message available");
                break;
            }
            continue;
        }
        else
        {
            Console.WriteLine("MQException caught: {0} - {1}", …
Run Code Online (Sandbox Code Playgroud)

.net c# ibm-mq

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

有关C代码注释样式的一些疑问

我对C代码注释的样式有疑问。像这样:

/* \brief Creates a new shm pcm */
Run Code Online (Sandbox Code Playgroud)

有时是这样的:

/* \!brief Creates a new shm PCM */
Run Code Online (Sandbox Code Playgroud)

“ \ brief”和“ \!brief”有什么区别

c doxygen alsa

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

*在函数args(C)中

void counter(unsigned * val)
{
    static unsigned count=0;
    *val= ++count;
}
Run Code Online (Sandbox Code Playgroud)

为什么unsigned和之间有空格val?它不应该只是*val指向内存地址val吗?

c

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

是std :: vector <bool> :: resize标准的最终默认参数吗?

我的编译器(MSVC2012)默认false为最终参数

std::vector<bool>::resize(std::vector<bool>::size_type, bool)

这是标准的C++还是Microsoft扩展?

我不认为对于非专业化而言resize,由于大小增加而引入的任何元素都未初始化.

http://en.cppreference.com/w/cpp/container/vector_bool似乎没有说清楚.

c++ vector visual-c++

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

如何在C中读取.csv文件

我知道关于这个主题还有其他问题,但我仍然无法找到问题的解决方案.

我正在尝试使用该fscanf()函数在C中读取.csv文件.

如果我用文本编辑器打开csv文件,它看起来像这样:

578,2.2212e+05,223,0,243,0,0,0.09,0,0,0,3
633,2.2222e+05,223,0,243,0,0,-0.04,0,0,0,3
688,2.2232e+05,223,0,243,0,0,0.07,0,0,0,3
740,2.2242e+05,223,0,243,0,0,0.04,0,0,0,3
793,2.2252e+05,224,0,244,0,0.01,0.16,0,0,0,3
848,2.2262e+05,223,0,717,0.060985,0.02,0.08,0,0,0,4
902,2.2272e+05,223,0,721,0.084618,0.03,0.24,0,0,0,5
955,2.2282e+05,223,0,730,0.12825,0.05,0.34,0,0,0,4
Run Code Online (Sandbox Code Playgroud)

我刚刚报告了前几行,但它包含了更多内容.

然后我用这段代码来读取文件:

FILE* stream = fopen("./filelog.csv", "r");
if(stream == NULL) {      
       printf("\n file opening failed ");      
       return -1 ;   
} 
int values[8];
int count;
for(count = 0; count < 8; count++) {

    int u = fscanf(stream, "%i", &values[count]);
    printf("%i\n", values[count]);
}
Run Code Online (Sandbox Code Playgroud)

我得到的输出如下:

578
32697
0 
0
1
0
4199901
0
Run Code Online (Sandbox Code Playgroud)

我们可以看到只有第一个值被正确读取.我怎么能读取整个文件并将其存储到矩阵中?我找不到任何解决方案.非常感谢您提前回复!

c csv file

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

无法召唤未来::获取存储在地图中的未来

我将C++期货存储在地图中,但是future::get()一旦它们出现在地图中,我就无法调用期货.

代码是:

#include <iostream>
#include <map>
#include <cstdlib>
#include <future>

using namespace std;

int my_func(int x) {
    return x;
}

int main()
{
    map<int, future<int>> tasks;

    // Create a task and add it to the map
    int job_no = 0;
    tasks.insert(make_pair(job_no, async(&my_func, job_no)) );

    // See if the job has finished
    for (auto it = tasks.cbegin(); it != tasks.cend(); ) {
        auto job = it->first;
        auto status = (it->second).wait_for(chrono::seconds(5));

        if (status == future_status::ready) {
           int val = (it->second).get(); …
Run Code Online (Sandbox Code Playgroud)

c++ future c++11

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