我的地形引擎有问题(使用DirectX).
我正在使用矢量来保存细节块的顶点.当块增加细节时,向量就会增加.
但是,当块减少其细节时,矢量的大小不会缩小.
所以,我的问题是:有没有办法缩小向量的大小?我试过这个:
vertexvector.reserve(16);
Run Code Online (Sandbox Code Playgroud) 我看不到用Poco的 Poco::Util::Application
类和相关的方法来支持位置命令行参数Poco::Util::OptionProcessor
.位置参数是命令行上的未命名参数,在所有其他选项之后结束,如下所示:
someprogram -b --what=121 filename.bin
Run Code Online (Sandbox Code Playgroud)
在该示例中,filename.bin是位置参数,它没有名称,但是在所有命名参数之后的第一个位置参数.Boost的program_options支持这一点,我发现很难相信Poco没有,但我发现如何根据源和文档来支持它.
Poco支持这个吗?
是的,我是那些正在学习来自Java的C++的人之一,被自动垃圾收集器宠坏了.有一种特殊的情况,我想知道我是否在泄漏记忆.我们在C++中考虑一下:
bool *test = new bool(false);
test = new bool(true);
delete test;
Run Code Online (Sandbox Code Playgroud)
我在这里泄漏记忆吗?或者我应该delete
在分配新值之前先打电话?像这样:
bool *test = new bool(false);
delete test;
test = new bool(true);
delete test;
Run Code Online (Sandbox Code Playgroud)
我的直觉告诉我第一个是正确的,因为指针test
指向内存中的相同地址,并为其变量分配新值,不会更改此地址.或者new
运营商是否在内存中分配了不同的地址?任何人都可以给我一个线索,或者我是否一起弄错了?
我有一个数据框,我在其上计算特定列的运行长度编码.列的值为dir
-1,0或1.
dir.rle <- rle(df$dir)
然后,我获取运行长度并计算数据帧中另一列的分段累积和.我正在使用for循环,但我觉得应该有一种更聪明地做到这一点的方法.
ndx <- 1
for(i in 1:length(dir.rle$lengths)) {
l <- dir.rle$lengths[i] - 1
s <- ndx
e <- ndx+l
tmp[s:e,]$cumval <- cumsum(df[s:e,]$val)
ndx <- e + 1
}
Run Code Online (Sandbox Code Playgroud)
为每次运行dir
定义start s
,和end 的运行长度e
.上面的代码有效,但它不像惯用的R代码.我觉得如果没有循环,应该有另一种方法来做到这一点.
假设我有以下两种数据结构:
std::vector<int> all_items;
std::set<int> bad_items;
Run Code Online (Sandbox Code Playgroud)
该all_items
向量包含所有已知的项目和bad_items
载体包含坏的项目清单.这两个数据结构完全相互独立地填充.
编写一个返回std::vector<int>
包含所有all_items
不包含元素的方法的正确方法是bad_items
什么?
目前,我有一个笨重的解决方案,我认为可以更简洁地完成.我对STL功能适配器的理解不足.因此问题.我目前的解决方案是:
struct is_item_bad {
std::set<int> const* bad_items;
bool operator() (int const i) const {
return bad_items.count(i) > 0;
}
};
std::vector<int> items() const {
is_item_bad iib = { &bad_items; };
std::vector<int> good_items(all_items.size());
std::remove_copy_if(all_items.begin(), all_items.end(),
good_items.begin(), is_item_bad);
return good_items;
}
Run Code Online (Sandbox Code Playgroud)
假设all_items
,bad_items
,is_item_bad
和items()
一些含类的所有部分.有没有办法把它们写成items()
getter:
struct is_item_bad
?我本来希望只使用这个count
方法std::set
作为仿函数,但我无法用正确的方式来表达这个remove_copy_if
算法.
编辑: …
我做这样的事情并从编译器中获取错误
using namespace std;
///define a method for list
void method(const list<int>&lst) //ERROR here
{
//do something
}
Run Code Online (Sandbox Code Playgroud)
我不知道为什么
c++ ×5
stl ×3
c++11 ×1
data.table ×1
memory ×1
memory-leaks ×1
new-operator ×1
plyr ×1
pointers ×1
r ×1
vector ×1