小编Pau*_*gue的帖子

如何在列表中获得倒数第二个元素?

我有一个 std::list<double> foo;

我正在使用

if (foo.size() >= 2){
    double penultimate = *(--foo.rbegin());
}
Run Code Online (Sandbox Code Playgroud)

但这总是给我任意的价值penultimate.

我究竟做错了什么?

c++ stl stdlist

69
推荐指数
3
解决办法
2698
查看次数

是否定义了if(++ i)++的行为?

假设我有这个代码:

int main(void)
{
    int i = rand();
    if (++i) ++i;
    return i;
}
Run Code Online (Sandbox Code Playgroud)

这里定义的行为是什么?我知道这i = ++i是未定义的,第二行main包含类似的东西.该rand()呼叫在那里阻止优化了什么,我认为是有问题的行的编译器.

c

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

std::istringstream::imbue 是否拥有传递的对象

我正在使用 Boost 将“01-Jan-2000”形式的日期转换为儒略数。我这样做的方法是使用

int toJulian(std::string date)
{
    std::locale loc = std::locale(std::locale::classic(), new boost::posix_time::time_input_facet("%d-%b-%Y"));
    std::istringstream ss(date);
    ss.imbue(loc);
    boost::posix_time::ptime p;
    ss >> p;
    return p.date().julian_day();
}
Run Code Online (Sandbox Code Playgroud)

(这与 Boost 文档中的示例一致)。

但我不清楚这是否会泄漏内存。我没有明确的delete。显然,如果imbue将指针的所有权传递给loc流,那么当ss超出范围时它可能会被删除。

我对么?

请参阅http://www.boost.org/doc/libs/1_43_0/doc/html/date_time/date_time_io.html#date_time.format_flags

c++ boost

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

重复递增浮点数

我正在查看一些遗留代码,它们定义了沿轴的一些网格点f.

int main(){
    double f[9];
    int i = 0;
    for (double a = 0; a <= 1; a += 0.125){
        f[i++] = a;
    }
}
Run Code Online (Sandbox Code Playgroud)

我担心重复添加1/8到a,并且循环没有正确运行.这是因为我认为你不能像这样添加浮点值,并且当它i是8 时它依赖于它正好是1 .

或者这段代码好吗,我应该不再担心了吗?(该代码显然至少已有20年历史,并且从未造成过麻烦 - 尽管在原始版本中,double a已经在循环之外声明,但我正在阅读为什么会这样.).

c floating-point

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

为什么std :: min_element和公司不专门用于std :: vector <bool>

我有一个std::vector<bool>实例(foo比方说),我需要编写一个函数,true如果所有元素都返回true.

我用

return *std::min_element(foo.begin(), foo.end());
Run Code Online (Sandbox Code Playgroud)

实现这一点,但这让我想到:false如果容器包含至少一个false值,你知道最小元素.换句话说,您不需要遍历整个容器end(),这意味着专业化std::min_element是合适的,就像专业化std::vector<bool>被认为是合适的.

我错过了什么吗?或者这会被视为过早的优化?也许一个好的编译器无论如何都会解决它.

c++ algorithm boolean vector specialization

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

标签 统计

c++ ×3

c ×2

algorithm ×1

boolean ×1

boost ×1

floating-point ×1

specialization ×1

stdlist ×1

stl ×1

vector ×1