小编mah*_*ood的帖子

检查是否使用"-static"编译的二进制文件

我在linux中有一个二进制文件.如何检查是否已使用"-static"编译?

linux static gcc

11
推荐指数
3
解决办法
7457
查看次数

使用带谓词的std :: find

我想使用std::find函数和谓词(不确定我是否使用正确的单词).这是代码

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
class foo {
public:
  typedef pair< int, vector<int> > way;
  typedef pair< int, int > index;
  typedef pair< index, vector<way> > entry;
  vector< entry > table;

  void bar() 
  {
     vector<int> v1;
     v1.push_back(1);
     v1.push_back(2);

     way w = make_pair( 1, v1 );
     vector<way> v2;
     v2.push_back(w);

     index id = make_pair( 10, 20 );
     entry en = make_pair( id, v2 );
     table.push_back( en );
  }
  void insert()
  {
     index new_id = make_pair( …
Run Code Online (Sandbox Code Playgroud)

c++ predicate vector find

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

清除矢量或定义新矢量,哪一个更快

哪种方法更快,开销更少?

方法1:

void foo() {
  std::vector< int > aVector;
  for ( int i = 0; i < 1000000; ++i ) {
     aVector.clear();
     aVector.push_back( i );
  }
}
Run Code Online (Sandbox Code Playgroud)

方法2:

void foo() {
  for ( int i = 0; i < 1000000; ++i ) {
     std::vector< int > aVector;
     aVector.push_back( i );
  }
}
Run Code Online (Sandbox Code Playgroud)

你可能会说这个例子毫无意义!但这只是我的大代码的片段.总之,我想知道它是否更好

"创建一个向量并清除它以供使用"

要么

"每次创造一个新的矢量"

UPDATE

感谢您的建议,我测试了两个,这里是结果

方法1:

 $ time ./test1

 real    0m0.044s
 user    0m0.042s
 sys     0m0.002s
Run Code Online (Sandbox Code Playgroud)

方法2:

$ time ./test2

real    0m0.601s
user    0m0.599s
sys     0m0.002s
Run Code Online (Sandbox Code Playgroud)

清除矢量更好.也许这有助于别人:)

c++ vector

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

JVM/JAVA中的预取指令

是否有任何Java语言或JVM中的软件预取指令,例如GCC中提供的__builtin_prefetch

java jit jvm

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

cmake 命令的详细输出

我想知道是否有任何方法可以调试一个cmake进程,强制命令打印有关变量如何获取某些值的模式详细信息。例如,我看到

-- Boost version: 1.63.0
-- Boost version: 1.63.0
-- Found the following Boost libraries:
--   system
--   filesystem
--   timer
--   chrono
Run Code Online (Sandbox Code Playgroud)

我想知道在哪里检查和找到该版本。

我在运行之前添加了set(CMAKE_VERBOSE_MAKEFILE ON)第一行。但是,我没有看到任何详细消息。CMakeLists.txtcmake ..

set -x我正在寻找类似bash 编程的东西。

cmake

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

无法提交到 git,并出现 gpg 密钥错误

使用git version 2.20.1官方指南,我运行以下命令来生成 pgp 密钥

$ gpg --full-generate-key
...
$ gpg --list-secret-keys --keyid-format LONG
gpg: checking the trustdb
gpg: marginals needed: 3  completes needed: 1  trust model: pgp
gpg: depth: 0  valid:   1  signed:   0  trust: 0-, 0q, 0n, 0m, 0f, 1u
/home/mahmood/.gnupg/pubring.kbx
--------------------------------
sec   rsa4096/CFEFE6D58A392624 2020-09-08 [SC]
      26XX594XXXE2BAXXXE40AXXXCFXXX6D5XXXXX624
uid                 [ultimate] mahmood <EMAIL>
ssb   rsa4096/3B138A448B277FD9 2020-09-08 [E]
Run Code Online (Sandbox Code Playgroud)

现在我可以使用以下命令查看公钥:

$ gpg --armor --export CFEFE6D58A392624
-----BEGIN PGP PUBLIC KEY BLOCK-----

mQINBF9XdKoBEACyQjVUlBYjOLSqv7YRIIq0+iJ9A0UzkItUoWBnDrHmTdnH+UeK
...
=WCOk
-----END PGP PUBLIC KEY BLOCK----- …
Run Code Online (Sandbox Code Playgroud)

git gnupg gpg-agent

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

高效的循环清单

我想要一个简单而有效的循环缓冲区/队列.如果我使用std::vector,我必须这样做:

if ( v.size() >= limit ) {
    std::vector<int> it = v.begin();
    v.insert( it, data );
    v.erase( it+1 );
}
Run Code Online (Sandbox Code Playgroud)

有没有更简单的解决方案?

c++ vector circular-buffer circular-list

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

将从mercurial更新覆盖我的更改?

我使用hg命令从存储库(mercurial存储库)更新项目.

hg pull
hg update
Run Code Online (Sandbox Code Playgroud)

问题是,从我上次更新,我为自己修改了一些文件.现在关注的是从存储库更新将覆盖我的更改.我怎么能防止这种情况?

mercurial

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

固定大小unordered_map,如何定义?

是否可以定义固定大小unordered_map

查看成员函数,没有resize()类似的std::vectorstd::list.此外,谷歌没有帮助我.

c++ unordered-map fixed-size-types

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

std :: abs用于"unsigned long long int"数据类型

为什么我会收到此错误

 C2668: 'abs' : ambiguous call to overloaded function
Run Code Online (Sandbox Code Playgroud)

对于像这样的简单代码

#include <iostream>
#include <cmath>
int main()
{
  unsigned long long int a = 10000000000000;
  unsigned long long int b = 20000000000000;
  std::cout << std::abs(a-b) << "\n";   // ERROR
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

删除后仍会出现错误std::.但是,如果我使用int数据类型(值较小),则没有问题.

传统的解决方案是手动检查

std::cout << (a<b) ? (b-a) : (a-b) << "\n";
Run Code Online (Sandbox Code Playgroud)

这是唯一的解决方案吗?

c++ visual-studio-2010

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