我觉得为什么QMap实现了跳过列表数据结构而不是rb-tree?有关并发数据结构和跳过列表优势的非常有趣的SO线程比rb-tree,优点和缺点.它确实是非常有用的链接,但QMap不是线程安全的,它不会进行任何互斥锁定,以便开箱即用同步访问.它需要包装或子类化.
对我来说,编写"手工制作"的滑雪列表而不是rb-tree并不简单,所以这也不是很明显.
在非线程安全的Qt容器的上下文中是否有任何kill-feature?
Tnx提前.
我遇到了一些问题,无法确定什么是正确的解决方案.
以下是用于说明的代码示例:
#include <boost/make_shared.hpp>
#include <boost/shared_ptr.hpp>
class TestClass{
public:
int a;
TestClass(int& a,int b){};
private:
TestClass();
TestClass(const TestClass& rhs);
};
int main(){
int c=4;
boost::shared_ptr<TestClass> ptr;
//NOTE:two step initialization of shared ptr
// ptr=boost::make_shared<TestClass>(c,c);// <--- Here is the problem
ptr=boost::shared_ptr<TestClass>(new TestClass(c,c));
}
Run Code Online (Sandbox Code Playgroud)
问题是我无法创建shared_ptr实例,因为make_shared获取并将TestClass构造函数的参数下传为"const A1&,const A2&,...",如下所示:
template<typename T, typename Arg1, typename Arg2 >
shared_ptr<T> make_shared( Arg1 const & arg1, Arg2 const & arg2 );
Run Code Online (Sandbox Code Playgroud)
我可以用boost :: shared(new ...)或用于const引用的重写构造函数进行欺骗,但似乎不是应该的方式.
Thnx提前!
有人可以提示一下编译器如何处理表达式,例如
class DerivedA: public ParentTemplateClass<DerivedA>{
}
Run Code Online (Sandbox Code Playgroud)
对于我来说它看起来像:
这个男孩的父亲是这个男孩的"儿子"
我的意思是,对于我来说,如何在不知道父类的确切"描述"的情况下完成DerivedA类的"解析"并不明显.似乎'它不能.所以必须在孩子之前处理父类,但在这种情况下,父母依赖于孩子......我就被困在那里.
是的,网上有一些文章描述了这种事情的用法,例如一篇关于好奇重复模板模式的文章( http://en.wikibooks.org/wiki/More_C++_Idioms/Curiously_Recurring_Template_Pattern),但这不是某种标准或附近的smth.必须有明确的行为描述,例如操作顺序不是吗?
答案:Thnx给大家.是的,向前推断类比对我来说似乎是合法的,可以阻止我的大脑受损.模板仍然是我的艺术状态因为它隐藏的子语言性质,我不能只是g ++ -E :)
无法在Debian Linux + fluxbox下赢得emacs字体大战.
应该提到我在fontconfig中绝对没有经验,所以我错过了一些明显的东西.
我试图在emacs下使用/ usr/share/fonts之类的系统字体,比如DejaVu,但没有运气.
我试过了:
1.提到很多资源命令
(set-default-font "DejaVu Sans Mono-12")
Run Code Online (Sandbox Code Playgroud)
对于我尝试过的几乎任何字体名称,都返回"Font not available".
2.
Shift+Mouse-Left-Click->Change Text Font ->
Run Code Online (Sandbox Code Playgroud)
给出了很少的可用字体列表,其中包含两个或三个不同的大小.
我试过了:
ln -s /usr/share/fonts ~/.fonts
Run Code Online (Sandbox Code Playgroud)
没别的了
4.尝试使用xset方法(在archlinux wiki上找到这样的方法并盲目测试):
cd /usr/share/fonts/truetype/ttf-dejavu
sudo mkfontdir
xset +fp /usr/share/fonts/truetype/ttf-dejavu
xset fp rehash
Run Code Online (Sandbox Code Playgroud)
没有
5.我甚至将emacs用于访问具有字体名称的目录:
2>&1 strace -f emacs-24.3.1 > ./t.txt
Run Code Online (Sandbox Code Playgroud)
但
grep -i font ./t.txt
Run Code Online (Sandbox Code Playgroud)
仅给出:
[pid 18809] writev(3, [{"b\1\6\0\17\0\1\0", 8}, {"XFree86-Bigfont", 15}, {"\0", 1}], 3) = 24
Run Code Online (Sandbox Code Playgroud)
并没有像〜/ .fonts或/ usr/share/fonts这样的目录
同时:
% fc-list|grep -c deja
42
Run Code Online (Sandbox Code Playgroud)
它是如何工作的?:( Mb我不明白一些主要想法?
更新:我使用opensoop -v监视我的笔记本电脑上使用emacs的路径(在os x下)获取字体,但这与Linux路径ofc没有任何关系:( …
我相信每个人都有时间面对丑陋的事情.
问题是在类中添加一个字段并忘记扩展初始化列表,例如:
class T{
private:
field1;
...
field10;
};
T::T( int speedValue ):
field1( Speed::MphToMps(speedValue) ),
field2( new OtherClass(14,5,15) ),
field3( PublicValueGenerator::generateNewFieldValue(0,15) ),
...,
field10( "unpredictable value" );
Run Code Online (Sandbox Code Playgroud)
如果赶时间我添加一些字段,比如newForgottenField,我不时会忘记设置初始值.正如我记得一些IDE可以给出一个提示,但是vim + addons是我的选择:)
所以MB有一些提示,以简化跟踪这样的情况下或拇指或粗鲁宏的一些规则,它会发出警告或编译时错误(这将是惊人的:))?你如何克服这个障碍?
最好的祝福
c++ ×4
boost ×1
constructor ×1
crtp ×1
emacs ×1
fonts ×1
qmap ×1
qt ×1
shared-ptr ×1
skip-lists ×1
templates ×1