小编Ima*_*ego的帖子

使用C/C++实现执行超时

我一直在考虑在我的代码中实现执行超时机制.我浏览了寻找建议,但我看到的只是为正在调用的其他程序执行执行超时,这不是我的想法.

我在Linux上使用C/C++.

在不使用外部库的情况下实现此目的的最佳方法是什么?我认为可能运行一个单独的线程,在超时时,向进程ID发送一个TERM信号,然后程序处理它并退出,但我不知道它是否在良好实践方面是正确的.

你会如何实现它?

提前致谢

c c++ linux timeout execution

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

部分类模板专业化与地图

我是一名新的C++程序员,不久前我学习了Java和ANSI C,并决定试一试.

好吧,我喜欢C++,但我不喜欢迭代器的工作方式:

在java中,你可以将整个容器设为私有,并为它的迭代器实现一个getter函数,迭代器有一个方法hasNext(),它返回一个布尔值,具体取决于它是否已到达容器的末尾.

我发现在C++上做类似事情的唯一方法就是编写2个getter,iteratorBegin()然后iteratorEnd()返回一个对应于第一个和最后一个位置的interator,递增返回的迭代器iteratorBegin()并将其与之比较iteratorEnd(),允许我迭代容器直到最后一个已经达到了位置

但是,我想只使用一个getter方法,我想:"让我自己创建迭代器类"

到目前为止一切顺利,我已成功完成了套装和列表,但我似乎无法用地图制作它,这里的代码令我不安:(该类是在一个单独的.h中定义的,这称为customIterator的.cpp)

template<typename T, typename D>
const D& custIterator<T,D>::next()
{
    const D& obj = (*it);
    if(hasNext())
    {
        it++;
    }
    return obj;
}

//the above works fine

template<typename T, typename D>
const D& custIterator<map<T,D>,D>::next() //error in this line
{
    D& obj = (*it).second; 
    if(hasNext())
    {
        it++;
    }
    return obj;
}
Run Code Online (Sandbox Code Playgroud)

在编译专用方法时,它说:错误:即使我#include <map>在文件顶部添加了'map'也未在此范围内声明

我正在使用带有代码块的gcc版本4.4.5(Debian 4.4.5-8)

拜托,我需要一些帮助.

感谢您的关注!

c++ templates iterator map partial-specialization

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

标签 统计

c++ ×2

c ×1

execution ×1

iterator ×1

linux ×1

map ×1

partial-specialization ×1

templates ×1

timeout ×1