小编Kem*_*hou的帖子

我可以在C++中同时分配2个变量吗?

int DFS(a, b,c,d)
{
    first=a+b;
    second=c+d;
    return(first,second);
}

solution, cost_limit = DFS(a, b,c,d);
Run Code Online (Sandbox Code Playgroud)

我可以这样做吗?如何?

c++

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

std :: ostream_iterator阻止最后一项使用分隔符

有没有办法使用std :: ostream_iterator(或类似的),以便不为最后一个元素放置分隔符?

#include <iterator>
#include <vector>
#include <algorithm>
#include <string>


using namespace std;
int main(int argc, char *argv[]) {
    std::vector<int> ints = {10,20,30,40,50,60,70,80,90};
    std::copy(ints.begin(),ints.end(),std::ostream_iterator<int>(std::cout, ","));
}
Run Code Online (Sandbox Code Playgroud)

会打印

10,20,30,40,50,60,70,80,90,

我试图避免落后的分隔符.我想要打印

10,20,30,40,50,60,70,80,90

当然,你可以使用一个循环:

for(auto it = ints.begin(); it != ints.end(); it++){
  std::cout << *it;
  if((it + 1) != ints.end()){           
    std::cout << ",";
  }
}
Run Code Online (Sandbox Code Playgroud)

但是考虑到基于C++ 11范围的循环,跟踪位置是很麻烦的.

int count = ints.size();
for(const auto& i : ints){
  std::cout << i;
  if(--count != 0){
    std::cout << ",";
  }     
}
Run Code Online (Sandbox Code Playgroud)

我愿意使用Boost.我查看了boost :: algorithm :: …

c++ iostream stl-algorithm

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

如何使用GNU的autoconf和automake打包数据文件

我是一个相当新的C++程序员.我使用SDL库做了一个非常简单的游戏.我的游戏自然会使用一些图像,声音和字体.我想要分发包,用户可以配置&& make.这并不是说这个简单的游戏值得分发,但我想了解autoconf和automake的工作原理.我搜索了互联网上的例子,但我找到的教程只显示了一个简单的helloworld程序的安装.他们既没有谈论数据文件的安装,也没有讨论如何检查某些库是否存在,以便我可以在编译时链接它们.而且,我的程序应该知道每个文件的安装位置,以便它可以加载它们.我已经深入研究了automake和autoconf手册,但它们更像是参考资料,而不是新手的资源.任何人都可以简单地解释这个概念,或者引导我到一些我可以阅读它们的地方.

c++ automake autoconf data-files

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

setup.py install 运行 Egg_info 错误:[Errno 13] 权限被拒绝,无论安装目录如何

我遇到了 setup.py 的类似 bug 的功能,无论我想在没有 root 权限的情况下安装包,我都会收到权限被拒绝的错误。

我有一个玩具 python 包,里面有一些小文件,构建它没有问题。setup.py 文件中没有什么特别的。我将列出其中的一两个。

setup (
   name='pmsi',
   entry_points={ 'console_scripts': [ 'pmsi = pmsi.pmsi:main', ] },
)


sudo python3 setup.py install 
Run Code Online (Sandbox Code Playgroud)

给我一点问题都没有。我需要将此软件包安装到特定位置并尝试过 --user、--home、--prefix 选项;在 Egg_info 步骤中都给了我相同的错误消息。

python3 setup.py install --user
running install
running bdist_egg
running egg_info
error: [Errno 13] Permission denied
Run Code Online (Sandbox Code Playgroud)

看来安装过程总是尝试将 Egg_info 复制到我无权写入的某个系统位置。我不是 setup.py 方面的专家,必须有一些默认规则我可以​​在命令行或 setup.py 上覆盖。或者我应该始终以 root 身份安装到系统位置(这似乎是一个糟糕的选择,如果您想在系统安装之前进行测试怎么办)。

python pip setup.py python-3.x

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

c++ 中 new 运算符之后和 type 之前的 (placement_params) 括号是什么意思?

第一个括号有什么作用?

// TArray<struct FBatchedLine> BatchedLines;      // declared in LineBatchComponent.h

new(BatchedLines) FBatchedLine(Start, End, Color, LifeTime, Thickness, DepthPriority);
Run Code Online (Sandbox Code Playgroud)

新的运营商参考说,这是一个placement_params

如果提供了placement_params,它们将作为附加参数传递给分配函数

我想它直接在给定数组的末尾创建对象BatchedLines,但我不确定完全理解它是如何工作的。

什么时候placement_params有用?

笔记

对于那些有权访问 github UnrealEngine 存储库的人,这里是源文件。

c++ allocation new-operator

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

未找到 CMAKE 所需的标头 sys/stat.h

我正在尝试配置使用 CMake 的 bcl2fastq 程序。我找到了触发此错误消息的行

file:bcl2fastq/src/cmake/cxxConfigure.cmake
############## content ####################
..... # ignoring many lines
bcl2fastq_find_header_or_die(HAVE_SYS_STAT_H  sys/stat.h)
......# more lines following
Run Code Online (Sandbox Code Playgroud)

错误信息:

-- time.h found as /usr/include/time.h
-- unistd.h found as /usr/include/unistd.h
CMake Error at cmake/macros.cmake:80 (message):
  Required header sys/stat.h not found.
Call Stack (most recent call first):
  cmake/cxxConfigure.cmake:41 (bcl2fastq_find_header_or_die)
  cxx/CMakeLists.txt:34 (include)
Run Code Online (Sandbox Code Playgroud)

在我的系统上,sys/stat.h位于

/usr/include/x86_64-linux-gnu
Run Code Online (Sandbox Code Playgroud)

在过去,我添加的符号链接/usr/includesys/stat.h,其修补的问题。有人可以通过修改 CMake 文件来建议更好的方法吗?

深入挖掘,我macros.cmakecxxConfigure.cmake包含宏定义的同一目录中找到了该文件:

#   
# Macro to find libraries, with support for static-only search
#
macro(bcl2fastq_find_header_or_die …
Run Code Online (Sandbox Code Playgroud)

c++ cmake

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

psycopg2 导入错误:未定义符号:PQconninfo

无法导入 psycopg2

python控制台输出:

导入 psycopg2

回溯(最近通话最后一个):文件“”,1号线,在文件“/home/user/.py_virtualenvs/verb_py3/lib/python3.5/site-packages/psycopg2/初始化py”为50行,在

from psycopg2._psycopg import (#noqa ImportError: /home/user/.py_virtualenvs/verb_py3/lib/python3.5/site-packages/psycopg2/_psycopg.cpython-35m-x86_64-linux-gnu.so: 未定义符号: PQconninfo

psycopg2 python-3.5 postgresql-9.5

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

将元素从地图移动到另一个的有效方法

我必须为这个问题找到一个有效的解决方案。我有两张地图。我必须将一些元素从 map1 移动到 map2(即从 map1 擦除并放入 map2)。我有我在 map1 中找到元素的键,即我现在正在做的:

bool temp;
temp = map1[key1];
map2[key1]=temp;
map1.erase(key1)
Run Code Online (Sandbox Code Playgroud)

我为每个键都这样做(在循环中)

我的问题是我的(我使用 C++11 编译器)是否有更便宜的解决方案

c++ c++11

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

R忽略R_LIBS_USER

我在Linux Centos上使用bash。我从$ HOME / .bashrc设置了R_LIBS_USER。还尝试在$ HOME / .Renviron上进行设置

# in .bashrc
export R_LIBS_USER=$HOME/lib/R/site-library

cat .Renviron
R_LIBS_USER=$HOME/lib/R/site-library
Run Code Online (Sandbox Code Playgroud)

我确保R_LIBS_USER设置正确。回声显示正确的值。但是,从提供正确R_LIBS_USER值的此终端运行R不会选择此值。

> .libPaths()
[1] "/global/software/r/3.5.0/lib64/R/library"
Run Code Online (Sandbox Code Playgroud)

.libPaths()仅显示默认库路径,而不是我的个人路径。$ HOME / lib / R / site-library不在.libPaths()的输出中。当我尝试在$ HOME / lib / site-library中加载库时,出现未找到包错误。我可以从R内部添加个人路径,然后可以在个人R lib目录中加载库。

> .libPaths(c("/myhome/lib/R/site-library", .libPaths()))
> .libPaths()
[1] "/myhome/lib/R/site-library"                           
[2] "/global/software/r/3.5.0/lib64/R/library"
Run Code Online (Sandbox Code Playgroud)

我已经搜寻了两天以寻找解决方案。其他人也有类似的问题,也没有解决方案。我曾经能够选择个人图书馆的路径,但不知道我所做的更改消除了这种正常行为。

bash r

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

autoreconf收到错误:找不到所需的文件'./test-driver'

运行autoreconf时出现此错误

parallel-tests: error: required file './test-driver' not found
parallel-tests:   'automake --add-missing' can install 'test-driver'
Run Code Online (Sandbox Code Playgroud)

如何解决这个错误?

autotools

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

C ++如何将对象移至nullptr

我在想一个奇怪的用例,我想将对象移到nullptr。也许我应该给出一个代码片段:

class Objpair {
   public:
      Objpair(Obj&& a, Obj&&b) : first(&a), second(&b) { }
   private:
       Obj* first;
       Obj* second;
};
Run Code Online (Sandbox Code Playgroud)

问题在于,当a和b超出范围时,第一和第二指针将悬空。如果我可以将Object a移到第一个指针上,那么应该就不会出现双重释放和作用域问题。如果首先将成员声明为Obj而不是Obj *指针,则直接的first(std :: move(a))将完成此工作。我在这里一定做错了。我正在考虑移动而不是复制,因为我试图将控制权从另一个对象转移到当前对象并提高性能。

使用指针版本是因为我正在考虑成员对象的多态行为。

c++ pointers move c++11

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