小编Lou*_*cio的帖子

收缩矢量

我的地形引擎有问题(使用DirectX).

我正在使用矢量来保存细节块的顶点.当块增加细节时,向量就会增加.

但是,当块减少其细节时,矢量的大小不会缩小.

所以,我的问题是:有没有办法缩小向量的大小?我试过这个:

vertexvector.reserve(16);
Run Code Online (Sandbox Code Playgroud)

c++ stl vector

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

Poco C++库是否支持位置命令行参数?

我看不到用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支持这个吗?

c++ command-line-arguments poco-libraries

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

将新值分配给变量时泄漏内存?

是的,我是那些正在学习来自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运营商是否在内存中分配了不同的地址?任何人都可以给我一个线索,或者我是否一起弄错了?

c++ memory pointers memory-leaks new-operator

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

运行长度的累计和.这个循环可以被矢量化吗?

我有一个数据框,我在其上计算特定列的运行长度编码.列的值为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代码.我觉得如果没有循环,应该有另一种方法来做到这一点.

r vectorization plyr data.table

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

如何返回包含不在集合中的元素的向量副本?

假设我有以下两种数据结构:

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_baditems()一些含类的所有部分.有没有办法把它们写成items()getter:

  • 它不需要方法中的临时变量吗?
  • 它不需要自定义函子,struct is_item_bad

我本来希望只使用这个count方法std::set作为仿函数,但我无法用正确的方式来表达这个remove_copy_if算法.

编辑: …

c++ stl c++11

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

定义const列表

我做这样的事情并从编译器中获取错误

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++ stl

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