小编ks1*_*322的帖子

C++ 使用 cppcheck 建议的显式

使用强制转换构造函数不好吗?否则为什么代码质量检查器(在我的例子中是 cppcheck)会不断建议在单参数构造函数之前添加显式?

如果我想做怎么办

class MyClass {  
 A(int) {}
};

A a = 1;
Run Code Online (Sandbox Code Playgroud)

如果我按照“建议”写

class MyClass {  
 explicit A(int) {}
};

A a = 1; 
Run Code Online (Sandbox Code Playgroud)

会抛出一个错误,但如果我使用第一个,我会收到一个警告,我必须记录以通过代码审查。

c++ explicit explicit-constructor cppcheck

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

为什么 glibc memcpy 不选择 avx512 版本?

我编译了以下示例代码:

 #cat array_addition.c 
 #define MAX 1000000
 #define S 1024
 #include <string.h>
int a[S], b[S], c[S];

__attribute__((target_clones("avx512f", "avx2","arch=atom","default")))
void foo(int argc){
    int i,x;

for (x=0; x<1024; x++){
    for (i=0; i<S; i++){
        a[i] = b[i] + c[i];
    }
}
    b[0] = argc;
    memcpy(&a[0], &b[0], argc *sizeof(int));
}
int main(int argc, char** argv) {
    foo(argc);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

其中调用 memcpy;

从 objdump 中,我们可以发现它会调用 GLIBC memcpy:

#readelf -r a.out 

Relocation section '.rela.dyn' at offset 0x418 contains 1 entry:
  Offset          Info           Type           Sym. Value    Sym. …
Run Code Online (Sandbox Code Playgroud)

c glibc compiler-optimization avx512

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

我可以使 clang 可执行文件有多小?

我只是测试一下我可以将这个 C++ 代码编写得有多小

#include <iostream>
using namespace std;

int main() {
    cout << "hi";
}
Run Code Online (Sandbox Code Playgroud)

使用此 zsh 命令:

g++ test.cpp -Os -g -o main
Run Code Online (Sandbox Code Playgroud)

但我能做到的最小是52 Kb,那么有什么办法可以让它更小呢?

c++ clang

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

权限被拒绝 - 无法打开outputfile

在Eclipse中编译c文件时,我偶尔会遇到此编译错误.

c:/ mingw/bin /../ lib/gcc/mingw32/4.7.2 /../../../../ mingw32/bin/ld.exe:无法打开输出文件main.exe:权限被拒绝

当我对源代码进行了更改时,它就会发生 - 但并非总是如此.

我知道如何解决这个问题*但是我想知道它为什么会发生以及如何避免它?

*在eclipse中,我转到调试器并终止程序的主线程

c eclipse mingw

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

像关系数据库一样使用boost多索引

这是我试图模拟的情况:

  COL1                 Col2     Col3
CBT.151.5.T.FEED       S1       t1
CBT.151.5.T.FEED       s2       t2
CBT.151.5.T.FEED       s3       t3
CBT.151.5.T.FEED       s4       t4
CBT.151.5.T.FEED       s5       t1

CBT.151.8.T.FEED       s7       t1
CBT.151.5.Q.FEED       s8       t3
Run Code Online (Sandbox Code Playgroud)

COL1 - 是ID,对于给定的ID,可以有多个符号.
COL2 - 符号,它们是唯一的
COL3 - 符号的更新时间,两个不同的符号可能同时更新,因此它们不是唯一的.

我的目标是获得最活跃的代码,让我们说出在过去60秒内更新过的符号.为此,我使用了boost multi索引.

头文件:

#ifndef __TICKER_INFO_MANAGER_IMPL__
#define __TICKER_INFO_MANAGER_IMPL__

#include <boost/interprocess/containers/string.hpp>
#include <boost/interprocess/shared_memory_object.hpp>
#include <boost/multi_index_container.hpp>
#include <boost/multi_index/member.hpp>
#include <boost/multi_index/ordered_index.hpp>
#include <TickerInfoManagerConstants.h>
#include <TickerInfo.h>

namespace bmi = boost::multi_index;
namespace bip = boost::interprocess;

struct id_index{};
struct symbol_index{};
struct last_update_time_index{};

struct Less {
  template<class T, class U>
    bool operator()(T const& t, …
Run Code Online (Sandbox Code Playgroud)

c++ boost boost-multi-index

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

O(n!)与O((n + 1)!)相同吗?

因为O(n 2)与O((n + k)2)相同,其中k是任何常数.因此,上述陈述可以用相同的逻辑真实吗?

例如:O((n + 1)2)=> O(n 2 + n + 1)=> O(n 2)

algorithm big-o time-complexity

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

如何获取双端队列的容量?

所以我最近介绍了双端队列,我想知道是否有任何方法可以访问 acapacity()的 a std::deque,就像我们在 a 上所做的那样std::vector

我发现这个成员函数std::deque::max_size但这代表:

双端队列容器可以作为内容容纳的元素的最大数量。

并且不符合我想要的。

有任何想法吗?

c++ deque

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

Linux:无法启动:内存不足

我写了一个小的java应用程序,还写了一个小的linux脚本来在Linux服务器下执行这个Java程序.

但是,当我试图运行这个Linux脚本时,我收到此错误

无法启动:内存不足

有人可以帮我解决这个问题吗?

这是我的剧本

echo "Start time: " `date`

SERVER_HOME=$HOME/

export CLASSPATH=.:

export CLASSPATH=$CLASSPATH$SERVER_HOME/home/kiran/apiToplist/lib/*:

echo $CLASSPATH


java -cp $CLASSPATH -Xmx2G com.tata.samples.QuoteData
echo "End time: " `date`
Run Code Online (Sandbox Code Playgroud)

java linux

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

使用 GDB 调试已编译的 C 程序以学习汇编编程

我对 gdb 很陌生。我写了一个非常简单的hello world程序

#include <stdio.h>

int main() {
  printf("Hello world\n");
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

我编译它-g以添加调试符号

gcc -g -o hello hello.c
Run Code Online (Sandbox Code Playgroud)

由于我不熟悉 gdb,因此我不确定接下来要做什么。我希望能够使用 gdb 来检查汇编代码。这就是我在 IRC 上被告知的。

c assembly gcc gdb

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

为什么我的递归 strlen 函数返回值大 4 倍?

我正在尝试用 C 语言实现一个strlen递归函数,由于某种原因,它返回的值是预期的 4 倍。

int *strlen(char *s)
{
   if(*s == '\0')
       return 0;
   else
       return 1 + strlen(s+1);
}
Run Code Online (Sandbox Code Playgroud)

有趣的是,当我将函数的返回类型更改为“char”时,我得到了所需的结果。我不明白为什么,无论如何它应该返回一个 int 。这段代码是我从书上抄来的,应该是对的。

c recursion c-strings

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

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