小编Joh*_*ell的帖子

提升智能指针和BOOST_NO_MEMBER_TEMPLATES

经过一番挣扎之后,我设法在警告级别4获得了为Windows CE/Mobile构建的智能指针.

我找到了阻止编译错误和警告的最小阻力方法

#define BOOST_NO_MEMBER_TEMPLATES
Run Code Online (Sandbox Code Playgroud)

它究竟意味着什么?我把自己的灵魂卖给了魔鬼吗?当我真正使用这些类型时,一切都会破裂吗?

c++ templates boost windows-mobile

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

何时在std :: map上选择std :: vector作为键值数据?

考虑缓存和数据局部性的积极作用主存储器中搜索时,我倾向于使用std::vector<>std::pair<>样的键值项,进行线性搜索两种,如果我知道,键值项的总金额绝不会"太大"严重影响业绩.

最近我遇到过很多情况,事先我知道我拥有大量的键值项目,因此std::map<>从一开始就选择了.

我想知道在上述情况下你如何为适当的容器做出决定.

你呢

  • 总是使用std::vector<>(或类似)?
  • 总是使用std::map<>(或类似)?
  • 对于项目计数范围中的哪一个优于另一个,有一种直觉?
  • 完全不同的东西?

谢谢!

c++

5
推荐指数
2
解决办法
2601
查看次数

谁创造了"控制容器倒置"这个词,哪个公共容器是第一个?

我很想知道随着时间的推移IoC容器是如何随着时间的推移而发展的,因为Inversion of Control Container被创造为它自己的表达,所以如果可能的话,我想追踪早期的容器.

  • 谁是第一个提到控制容器倒置
  • 哪个公共IoC容器首先出现?

dependency-injection ioc-container inversion-of-control

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

如何处理范围性质的服务,如DI和IOC环境中的事务

假设您的代码是通过构造函数注入任何依赖项而为DI和IOC正确设计的.然后,在组合根处是否使用IOC容器或DI是否对此问题无关紧要.我认为.

无论如何,我一次又一次地发现自己在如何最好地处理基于范围的服务(例如交易或其他明显的瞬态操作)的精神斗争中.我想遵守一些限制:

  • 不要让依赖接口成为IDisposable- 这是一个漏洞的抽象,只有实际的实现类型(和组成根处的小提琴手)应该关心.
  • 不要在图形深处使用静态服务定位器类型来解析依赖关系 - 只能通过构造函数注入和解析.
  • 不要将IOC容器(如果有)作为图形中的依赖项传递.

为了能够使用using,我们需要IDisposable,但由于依赖接口不应该是IDisposable,你如何绕过它来获得范围行为?

c# scope dependency-injection transactions ioc-container

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

是存储库具有更改事件的代码味道吗?

我没有看到在存储库模式实现中使用的更改事件,但我想让我的存储库像这样:

interface IEntityRepository
{
    event EventHandler<EntityChangedEventArgs> EntityAdded;
    event EventHandler<EntityChangedEventArgs> EntityRemoved;

    IEnumerable<Entity> GetAll();
    Entity GetById(int id);
}
Run Code Online (Sandbox Code Playgroud)

这主要是因为我的实体只能从外部添加和删除,而不是IEntityRepository的客户端.

通过这样做我是否认为存储库模式存在根本错误,或者我是否有一个有效的案例?

c# design-patterns repository

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

通过调试发布版本而不是调试版本,我可能会遇到哪些问题?

假设我更喜欢在开发期间调试我的软件的发布版本.

这样做可能会让我想念什么问题?

c# debugging visual-studio

5
推荐指数
2
解决办法
189
查看次数

Matlab:将全局坐标转换为图形坐标

如果我得到坐标

coords = get(0,'PointerLocation');
Run Code Online (Sandbox Code Playgroud)

如何将它们转换为通过点获得的积分ginput

即,我想从中得到相同的值

coords = get(0,'PointerLocation');
coords=someConversion(coords);
Run Code Online (Sandbox Code Playgroud)

正如我本来打电话的那样

coords=ginput(1);
Run Code Online (Sandbox Code Playgroud)

然后在与前一位代码相同的位置点击图中的鼠标.

matlab coordinates

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

使用LINQ,如何在特定索引中选择项目?

如果我有一个IEnumerable<Foo> allFoos和一个IEnumerable<Int32> bestFooIndexes,我怎么能得到一个新的IEnumerable<Foo> bestFoos包含指定索引的Foo条目?allFoosbestFooIndexes

c# linq ienumerable

4
推荐指数
2
解决办法
290
查看次数

何时添加移动构造函数和移动赋值运算符真的会有所作为?

考虑到当今关于返回值优化(RVO和NRVO)的编译器的高质量,我想知道在开始添加移动构造函数和移动赋值运算符时实际有意义的类复杂性.

例如,对于这个really_trivial类,我只是假设移动语义不能提供比RVO更多的东西,而NRVO在复制它的实例时已经做了:

class really_trivial
{
    int first_;
    int second_;

public:

    really_trivial();
    ...
};
Run Code Online (Sandbox Code Playgroud)

在这个semi_complex类中,我会毫不犹豫地添加一个移动构造函数和移动赋值运算符:

class semi_complex
{
    std::vector<std::string> strings_;

public:

    semi_complex(semi_complex&& other);
    semi_complex& operator=(semi_complex&& other);
    ...
};
Run Code Online (Sandbox Code Playgroud)

那么,在添加移动构造函数和移动赋值运算符时,开始有意义的成员变量的数量和类型是什么?

c++ value-type rvalue-reference move-semantics c++11

4
推荐指数
4
解决办法
1274
查看次数

如何区分空Platform.String和null Platform.String ^

我们验证方法参数在函数入口时不为null,但这不适用于Platform::String(或者Platform.String,C#或C++之间没有区别),因为它们使用null实例重载空字符串的语义.

考虑一下,总会抛出异常:

auto emptyString = ref new Platform::String();

// Now, emptyString.IsEmpty() will be true

if (emptyString == nullptr)
{
    throw ref new Platform::InvalidArgumentException();
}
Run Code Online (Sandbox Code Playgroud)

该变量具有非null值,但==比较运算符已重载,因此将其nullptrString实例为空时返回true 进行比较.

据我所知,这使得我们无法在Strings的函数入口处进行适当的空值检查.真的是这样吗?

windows-runtime

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