我一直在考虑在我的代码中实现执行超时机制.我浏览了寻找建议,但我看到的只是为正在调用的其他程序执行执行超时,这不是我的想法.
我在Linux上使用C/C++.
在不使用外部库的情况下实现此目的的最佳方法是什么?我认为可能运行一个单独的线程,在超时时,向进程ID发送一个TERM信号,然后程序处理它并退出,但我不知道它是否在良好实践方面是正确的.
你会如何实现它?
提前致谢
我是一名新的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)
拜托,我需要一些帮助.
感谢您的关注!