小编Yip*_*Yay的帖子

C++ - 区间树实现

有人知道interval treeC++中的任何好的实现吗?

显然,模板驱动的东西,更好的类似boost风格.

另一个问题 - 如果有人测试过,在std::vector实践中,基于分类的基本区间树实现是否可以击败通用区间树(使用O(lg)操作)

c++ interval-tree data-structures

31
推荐指数
2
解决办法
2万
查看次数

C#否定了一个表达式

我正在寻找一种方法来否定用于过滤IQueryable序列的表达式.

所以,我有类似的东西:

Expression<Func<T, bool>> expression = (x => true);
Run Code Online (Sandbox Code Playgroud)

现在我希望创建一个会导致屈服的表达式(x => false)- 所以我基本上想要否定它expression.

我发现自己的工作方法是这样的:

var negatedExpression = 
   Expression.Lambda<Func<T, bool>> (Expression.Not(expression.Body),
                                     expression.Parameters[0])));
Run Code Online (Sandbox Code Playgroud)

但我几乎肯定有更好的方法 - 你能帮助我吗?(Not(expression)可能是这样的).

c# expression negate

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

从文件中删除第一行

可能重复:
删除C#中文本文件的第一行

从巨大的(想想2-3 GB)文件中删除第一行的最快最聪明的方法是什么?

  • 我认为,你可能无法避免重写整个文件,但我可能错了.

  • 可以使用内存映射文件以某种方式帮助解决这个问题?

  • 是否可以通过直接在文件系统上运行来实现此行为(例如,NTFS) - 例如,更新相应的inode数据并更改文件的起始扇区,以便忽略第一行?如果是的话,这种方法是否真的很脆弱,或者还有许多其他应用程序,除了OS本身做类似的东西?

c# c++ io performance file

21
推荐指数
3
解决办法
1911
查看次数

嘲弄通用方法

假设我有一些通用方法的接口,没有参数:

public interface Interface {
   void Method<T>();
}
Run Code Online (Sandbox Code Playgroud)

现在我希望实现这个类的模拟(我正在使用Moq),我希望模拟这个方法的一些具体类型 - 让我说我在嘲笑Method<String>()调用.

mock = new Mock<Interface>();
mock.Setup(x => x.Method ????).Returns(String("abc"));
Run Code Online (Sandbox Code Playgroud)

的想法????应该是明确的-这lambda表达式应该处理的情况时,TMethod<T>实际上是一个String.

有什么方法可以达到想要的行为吗?

.net c# generics moq

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

如何创建单例IEnumerable?

C#是否提供了一种很好的方法来将单个实体类型转换TIEnumerable<T>

我能想到的唯一方法是:

T entity = new T();
IEnumerable<T> = new List { entity }.AsEnumerable();
Run Code Online (Sandbox Code Playgroud)

我想应该有更好的方法.

c# generics ienumerable

17
推荐指数
3
解决办法
4060
查看次数

Java - 设置类路径

我的示例应用程序告诉我:

No 'qtjambi-deployment.xml' found in classpath, loading
libraries via 'java.library.path'
Run Code Online (Sandbox Code Playgroud)

我希望我的应用程序能够使用qtjambi-deployment.xml,但遗憾的是找不到合适的设置IntelliJ IDEA 10.5.

有人能帮助我吗?

java classpath intellij-idea

16
推荐指数
1
解决办法
9万
查看次数

MSVC如何优化静态变量使用?

我对Microsoft Visual C++编译器如何处理/优化静态变量感兴趣.

我的代码:

#include <cstdlib>

void no_static_initialization()
{
    static int value = 3;
}

void static_initialization(int new_value)
{
    static int value = new_value;
}

int main()
{
    no_static_initialization();
    static_initialization(1);
    static_initialization(std::rand());

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

这是代码的程序集(使用优化编译):

大会清单的图片

我感兴趣的主要领域是最后一个案例.

这里,第一个语句得到了全面优化,第二个语句的两个调用被内联,它们实际上代表了类似的代码块.

如果测试不成功,它们中的每一个都会test something something然后缩短jump(这些跳跃显然指向相应例程的结束).

如果第一次调用该函数,编译器是否对每个函数调用进行显式检查?
编译器实际上是否有一个flag,表明这是否是第一次调用该函数?
它存放在哪里(我想所有的test东西都是关于它的,但我不确定)?

c++ optimization assembly static visual-c++

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

C++ - boost ::任何序列化

据我所知,没有序列化(boost::serialization实际上)支持boost::any占位符.

有人知道是否有办法序列化自定义boost::any实体?

这里的问题很明显:boost::any使用基于模板的占位符来存储对象并typeid检查是否boost::any_cast合适.

因此,有一个自定义抽象超类placeholder和基于自定义模板的派生类,它们通过以下方式创建:

template <T> custom_placeholder : public placeholder {
    virtual std::type_info type() const { return typeid(T); }
    virtual ...
};
Run Code Online (Sandbox Code Playgroud)

显然,即使考虑序列化这些东西,这也会带来一些麻烦.也许有人知道做这种序列化的一些技巧(当然还有正确的反序列化)?

谢谢

c++ serialization boost-any

12
推荐指数
2
解决办法
4136
查看次数

C#构造函数

有人可以建议我在编写C#构造函数时采取什么方法吗?

在其他语言中,C++一切都很好 - 通常不会使内部字段可见并为它们提供getter/setter.

这意味着,您可以为您的班级提供构造函数,这些构造函数初始化您的所有/部分本地成员并感到高兴.


C#但是,properties它允许我们写下这样的东西:

Class x = new Class { Field1 = new Field1 ...., Field2 = new Field2 }
Run Code Online (Sandbox Code Playgroud)

这允许对对象构造进行链接,并且正如我所假设的那样,可以删除许多构造函数,如果我们没有这些构造函数则需要这些构造函数properties.

将此与属性的默认值相结合,正如我所假设的,我们可以完全摆脱非专业的构造函数,它们实际上可以完成一些工作.

现在 - 是否可以删除冗余构造函数并允许通过字段初始化构建对象?

这种方法的缺点是什么?有人可能会给出关于结合字段和构造函数的使用的一般建议rules of thumb吗?

谢谢.

c# constructor field initializing

12
推荐指数
2
解决办法
1062
查看次数

在ListView控件中闪烁(OwnerDraw,Virtual)

这个问题可能被视为使用ownerdraw和virtualmode在listview中闪烁的后续行动.

我有一个ListView控件Virtual mode,我尝试执行自定义绘图.项目渲染通过以下方法覆盖完成:

protected override void OnDrawItem(DrawListViewItemEventArgs eventArgs) 
Run Code Online (Sandbox Code Playgroud)

如引用的问题所述,自定义绘图会在鼠标悬停事件上引入闪烁.调试器告诉我这是由于过多的自定义绘制事件被触发而发生的.


现在 - 引用问题的接受答案告诉我们:

这是.NET的ListView中的一个错误,你不能通过双缓冲解决它.

  • 那么,这些信息有多可靠?这真的是个错误吗?或者我们可能只是试图切断部分消息并希望它不会改变可见行为?

  • 这是真的,如果我有我的所有者绘制例程ListViewin in Virtual Mode,我可以抑制这些Custom Draw事件并且只执行我的绘图WM_PAINT或者,也许,这在某些情况下是不正确的?

  • System.Windows.Forms控制能够在WM_PAINT不改变其初始行为的情况下完成所有绘画的前提条件是什么?

c# listview flicker ownerdrawn winforms

12
推荐指数
2
解决办法
6243
查看次数