小编kiw*_*ptn的帖子

何时使用地图是有意义的?

我正在尝试使用地图(一组键值条目)来合并案例.到目前为止,我有两个类别(见下文).假设存在更多,它们是什么?

请将每个答案限制为一个独特的类别并举一个例子.


属性值(如bean)

age -> 30
sex -> male
loc -> calgary   
Run Code Online (Sandbox Code Playgroud)

存在,具有O(1)性能

peter -> 1
john  -> 1
paul  -> 1
Run Code Online (Sandbox Code Playgroud)

language-agnostic mapping dictionary map data-structures

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

堆栈对象的C++继承

我有一个基类Token.它没有实现,因此充当标记接口.这是调用者将使用的类型.

{
    Token t = startJob(jobId);
    // ... (tasks)
    // t falls out of scope, destructors are called
}
Run Code Online (Sandbox Code Playgroud)

我有一个派生类,LockToken.它包裹着互斥锁并确保在施工期间获得锁定并在破坏期间释放锁定.startJob方法是一种工厂方法,它决定是返回令牌(不提供锁定)还是返回LockToken(提供锁定).

Token startJob(int jobId)
{
    return (jobId>0) ? LockToken() : Token() ;
}
Run Code Online (Sandbox Code Playgroud)

当startJob返回一个基本实例(令牌)时,一切都运行良好.在另一种情况下(jobId> 0),有一个由派生实例组成的副本到基础实例.在其他工作中,一个不同的Token是从LockToken复制构造的,并且原始的LockToken过早地超出了范围,在startJob的范围内释放了锁.

我怎么摆脱这个?我可以更改startJob以使其返回或输出真正的协变令牌(意味着它可能是一个LockToken)吗?

c++ inheritance stack mutex locking

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