VS 2013 RTM中C++/CX的集合的新特性

简介:

嗨,我是Brandon Jacobs,是Visual C++图书馆团队的实习生。在实习期间,我的任务是为Stephan T添加新功能。拉瓦维的 . 作为为数不多的为做贡献的人之一,我当然感到荣幸。您可以在VS 2013 RTM中找到这些更改(这些更改不在2013预览版中)。

null

总结:

以下是我对所做的更改:

1.            添加了无序地图和无序地图视图 包装类到

2.            向Vector、VectorView、Map、MapView添加了初始化器u列表构造函数, 无序地图, 无序的地图视图。

3.            添加了验证,以便客户使用有效的WinRT类型来实例化中的集合。

特征:

无序地图和 无序地图视图:

这是std::unorderedu map类的包装类。功能与Map和MapView相同。唯一的区别是底层的数据结构,它是一个哈希表而不是一个平衡的二叉树。因此,类型必须是可哈希的,并且必须能够显示相等性。就像Map和MapView默认为std::less一样, 无序地图和 UnorderedMapView默认为std::hash和std::equalu to。hash和equality谓词都是模板参数,因此您可以更改UnorderedMap和 UnorderedMapView提供自己的谓词。

初始值设定项列表构造函数:

现在可以使用C++ 11初始化列表列表构造函数构造任何数据结构。

举个例子:

命名空间WFC=Windows::Foundation::Collections;

命名空间PC=Platform::Collections;

WFC::IVector^v=ref new PC::Vector{0,1,2,3,4,5,6,7,8,9};

WFC::IMap^m

=ref new PC::Map{1,10},{2,20},{3,30},{4,40};

WFC::IMap^m2

=ref new PC::UnorderedMap{1,10},{2,20},{3,30},{4,40};

仅有效的WinRT类型:

我们现在检查要存储在给定数据结构中的类型是否是有效的WinRT类型。当前如果您有:

向量<普通类>

你会得到一个奇怪的编译器错误。现在我们检查传入的类型是否是有效的WinRT类型。如果此检查失败,您现在将得到一个更好的编译器错误,甚至包括您试图创建具有无效类型的集合的行。

只有将出现在Windows::Foundation::Collections接口中的项需要是有效的WinRT类型。诸如std::less、std::hash等谓词不会传递到Windows::Foundation::Collections接口,因此它们不受该限制的影响。

有效的WinRT类型包括:

  1. 整数
  2. 接口类^
  3. 公共参考类^
  4. 价值结构
  5. 公共枚举类

感谢您抽出时间阅读本帖,

布兰登·雅各布斯

SDE实习生——Visual C++文库

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享