小编blu*_*luk的帖子

使用临时对象而不将其存储在变量中

让我们举一个例子,我们需要将从一个函数返回的向量插入到另一个向量中:

const std::vector<int> getvec(){
    return {1, 2, 3};
}

// in main...
std::vector<int> foo{ 11, 12 };
auto bar = getvec();
foo.insert(foo.end(), bar.begin(), bar.end());
Run Code Online (Sandbox Code Playgroud)

由于该bar变量需要在方法中引用两次,insert()因此有必要将向量存储为变量(如果foo.myinsert(getvec())有这样的接口,我们也可以这样做)。

让我有点恼火的是,在这种情况下,我们需要foo在主作用域中引入一个变量,该变量不应在其余代码中再次使用,因为它占用内存并污染命名空间。如果我们谈论的是一个大的“临时”对象,这尤其是一个问题。

有没有标准的方法来处理这个问题?我们可以定义一个仅接受“临时”对象一次的函数,以便我们可以直接将函数输出提供给它,但如果我们需要为每个类似的场景定义这样的函数,那么将很难管理。同样在这个例子中,我们无法为vector类定义成员函数。

或者使用大括号来限制插入的“临时”部分的范围,但我想知道这里是否有任何警告。

vector<int> foo{ 11, 12 };
{ // extra brace here
    auto bar = getvec();
    foo.insert(foo.end(), bar.begin(), bar.end());
} // extra brace here
Run Code Online (Sandbox Code Playgroud)

c++ temporary

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

在GitHub上安装吸墨纸和quantstrat

我正在经历从Github安装吸墨纸和quantstrat包的困难时期.当我们在sourceforge上托管时,我在网上找到的大多数帮助都已经过时了.我尝试使用install_github()函数,它返回错误如下.(事实上​​,当我尝试R-Forge时会出现类似的错误)任何人都能提供关于这里发生的事情的线索吗?

install_github("braverock/blotter")
Downloading GitHub repo braverock/blotter@master
from URL https://api.github.com/repos/braverock/blotter/zipball/master
Installing blotter
"C:/PROGRA~1/R/R-33~1.3/bin/x64/R" --no-site-file --no-environ --no-save  \
  --no-restore --quiet CMD INSTALL  \
  "C:/Users/User/AppData/Local/Temp/Rtmp8mMwyT/devtools416cfd229e7/braverock-blotter-bdefb02"  \
  --library="C:/Program Files/R/R-3.3.3/library" --install-tests 

* installing *source* package 'blotter' ...
** libs

*** arch - i386
c:/Rtools/mingw_32/bin/gcc  -I"C:/PROGRA~1/R/R-33~1.3/include" -DNDEBUG     -I"d:/Compiler/gcc-4.9.3/local330/include"     -O3 -Wall  -std=gnu99 -mtune=core2 -c calcPosAvgCost.c -o calcPosAvgCost.o
make: sh.exe: Command not found
make: *** [calcPosAvgCost.o] Error 127
Warning: running command 'make -f "C:/PROGRA~1/R/R-33~1.3/etc/i386/Makeconf" -f "C:/PROGRA~1/R/R-33~1.3/share/make/winshlib.mk" SHLIB="blotter.dll" OBJECTS="calcPosAvgCost.o"' had status 2
ERROR: compilation failed for package 'blotter'
* …
Run Code Online (Sandbox Code Playgroud)

packages r quantstrat

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

标签 统计

c++ ×1

packages ×1

quantstrat ×1

r ×1

temporary ×1