当前位置: 首页 > news >正文

网站编程好学吗上海公司购房政策

网站编程好学吗,上海公司购房政策,微信开发者平台在哪里找,常用的html编辑器有哪些在内部#xff0c;Windows 运行时集合具有大量复杂的移动部件。 但要将集合对象传递到 Windows 运行时函数#xff0c;或要实现自己的集合属性和集合类型时#xff0c;C/WinRT 中有函数和基类可以提供支持。 这些功能消除复杂性#xff0c;并节省大量时间和精力上的开销。 …在内部Windows 运行时集合具有大量复杂的移动部件。 但要将集合对象传递到 Windows 运行时函数或要实现自己的集合属性和集合类型时C/WinRT 中有函数和基类可以提供支持。 这些功能消除复杂性并节省大量时间和精力上的开销。 IVector 是由元素的任意随机访问集合实现的 Windows 运行时接口。 如果要自己实现 IVector还需要实现 IIterable、IVectorView 和 IIterator。 即使需要自定义的集合类型也需要做大量工作。 但如果你在 std::vector或者 std::map 或 std::unordered_map中有数据而你想要做的只是将其传递到 Windows 运行时 API那么如果可能你会希望避免进行该级别的工作。 要避免是有可能的因为 C/WinRT 可以帮助高效地创建集合且无需花费太多精力。 集合的帮助程序函数 通用集合空 本节介绍一个场景在该场景中你希望创建初始为空的集合然后在创建完毕后将其填充。 若要检索实现通用集合的类型的新对象可以调用 winrt::single_threaded_vector 函数模板。 该对象作为 IVector 返回并且它是一个接口通过它可以调用所返回对象的函数和属性。 若要将以下代码示例直接复制并粘贴到 Windows 控制台应用程序 (C/WinRT) 项目的主源代码文件中请先在项目属性中设置“不使用预编译的标头” 。 // main.cpp #include winrt/Windows.Foundation.Collections.h #include iostream using namespace winrt;int main() {winrt::init_apartment();Windows::Foundation::Collections::IVectorint coll{ winrt::single_threaded_vectorint() };coll.Append(1);coll.Append(2);coll.Append(3);for (auto const el : coll){std::cout el std::endl;}Windows::Foundation::Collections::IVectorViewint view{ coll.GetView() }; }如上述代码示例中所示创建集合之后你可以追加元素、对它们进行迭代并且通常可以像处理从 API 接收到的任何 Windows 运行时集合对象那样处理对象。 如果需要集合的不可变视图则可以调用 IVector::GetView如下所示。 如上所示的模式创建和使用集合适用于想要将数据传入 API 或从 API 获取数据的简单方案。 可以将 IVector 或 IVectorView 传递到预期 IIterable 的任意位置。 在上述代码示例中调用 winrt::init_apartment 会初始化 Windows 运行时中默认在多线程单元中的线程。 该调用还会初始化 COM。 通用集合从数据准备 本节介绍想要创建并填充集合的场景。 你可以避免上述代码示例中调用“追加”的开销。 你可能已拥有源数据或者可能更倾向于在创建 Windows 运行时集合对象之前填充源数据。 下面是操作方法。 auto coll1{ winrt::single_threaded_vectorint({ 1,2,3 }) };std::vectorint values{ 1,2,3 }; auto coll2{ winrt::single_threaded_vectorint(std::move(values)) };for (auto const el : coll2) {std::cout el std::endl; }可将包含数据的临时对象传递给 winrt::single_threaded_vector就像上方传递 coll1 那样。 也可以将 std:: vector假设不会再次访问移动到该函数中。 在这两种情况下都会将右值传递到函数。 这确保编译器能够高效运作并避免复制数据。 如果想要了解有关右值的详细信息请参阅值类别以及对它们的引用。 如果想要将 XAML 项目控件绑定到集合则可以执行以下操作。 但要明白若要正确设置 ItemsControl.ItemsSource 属性需要将其设置为 IInspectable 的 IVector 类型的值或 IBindableObservableVector 等互操作性类型的值。 以下是代码示例它生成适合绑定的类型集合并向其追加元素。 可在 XAML 项目控件绑定到 C/WinRT 集合中查找到此代码的上下文。 auto bookSkus{ winrt::single_threaded_vectorWindows::Foundation::IInspectable() }; bookSkus.Append(winrt::makeBookstore::implementation::BookSku(LMoby Dick));可以从数据创建 Windows 运行时集合并在集合上准备好视图以便传递给 API完全无需复制任何内容。 std::vectorfloat values{ 0.1f, 0.2f, 0.3f }; Windows::Foundation::Collections::IVectorViewfloat view{ winrt::single_threaded_vector(std::move(values)).GetView() };在上述示例中我们创建的集合可以绑定到 XAML 项目控件但是该集合是不可观测的。 可观测集合 若要检索实现可观测集合的类型的新对象调用具有任何元素类型的 winrt::single_threaded_observable_vector 函数模板。 但要使可观测集合适合绑定到 XAML 项目控件使用 IInspectable 作为元素类型。 该对象作为 IObservableVector 返回并且它是一个接口你或它绑定到的控件可以通过它调用所返回对象的函数和属性。 auto bookSkus{ winrt::single_threaded_observable_vectorWindows::Foundation::IInspectable() };有关将用户界面 (UI) 控件绑定到可观测集合的详细信息和代码示例请参阅 XAML 项目控件绑定到 C/WinRT 集合。 关联集合映射 以下是我们介绍的这两个函数的关联集合版本。 winrt::single_threaded_map 函数模板以 IMap 形式返回不可观测的关联集合。winrt::single_threaded_observable_map 函数模板以 IObservableMap 形式返回可观测的关联集合。 通过向函数传递 std::map 或 std::unordered_map 类型的右值可以选择为这些集合准备好数据。 auto coll1{winrt::single_threaded_mapwinrt::hstring, int(std::mapwinrt::hstring, int{{ LAliceBlue, 0xfff0f8ff }, { LAntiqueWhite, 0xfffaebd7 }}) };std::mapwinrt::hstring, int values{{ LAliceBlue, 0xfff0f8ff }, { LAntiqueWhite, 0xfffaebd7 } }; auto coll2{ winrt::single_threaded_mapwinrt::hstring, int(std::move(values)) };单线程 这些函数名称中的“单线程”表示它们不支持任何并发性换言之它们不是线程安全的。 此处提到的线程与单元无关因为这些函数所返回的对象都是敏捷的请参阅 C/WinRT 中的敏捷对象。 但是指对象是单线程的。 如果只想跨应用程序二进制接口 (ABI) 以某种方式传递数据那么这完全合适。 集合的基类 如果想要实现自定义集合以实现完全灵活最好避免采用这种复杂的方式。 例如如果没有 C/WinRT 基类以下就是自定义矢量视图的外观。 ... using namespace winrt; using namespace Windows::Foundation::Collections; ... struct MyVectorView :implementsMyVectorView, IVectorViewfloat, IIterablefloat {// IVectorViewfloat GetAt(uint32_t const) { ... };uint32_t GetMany(uint32_t, winrt::array_viewfloat) const { ... };bool IndexOf(float, uint32_t) { ... };uint32_t Size() { ... };// IIterableIIteratorfloat First() const { ... }; }; ... IVectorViewfloat view{ winrt::makeMyVectorView() };从 winrt::vector_view_base 结构模板派生自定义矢量视图并实现 get_container 函数来公开保存数据的容器这样做要简单得多。 struct MyVectorView2 :implementsMyVectorView2, IVectorViewfloat, IIterablefloat,winrt::vector_view_baseMyVectorView2, float {auto get_container() const noexcept{return m_values;}private:std::vectorfloat m_values{ 0.1f, 0.2f, 0.3f }; };get_container 返回的容器必须提供 winrt::vector_view_base 需要的 begin 和 end 接口。 如上述示例所示std::vector 支持这一点。 但你可以返回任何满足相同协定的容器包括自定义容器。 struct MyVectorView3 :implementsMyVectorView3, IVectorViewfloat, IIterablefloat,winrt::vector_view_baseMyVectorView3, float {auto get_container() const noexcept{struct container{float const* const first;float const* const last;auto begin() const noexcept{return first;}auto end() const noexcept{return last;}};return container{ m_values.data(), m_values.data() m_values.size() };}private:std::arrayfloat, 3 m_values{ 0.2f, 0.3f, 0.4f }; };以下是 C/WinRT 提供的基类用于帮助实现自定义集合。 winrt::vector_view_base 请参阅上述代码示例。 winrt::vector_base struct MyVector :implementsMyVector, IVectorfloat, IVectorViewfloat, IIterablefloat,winrt::vector_baseMyVector, float {auto get_container() const noexcept{return m_values;}auto get_container() noexcept{return m_values;}private:std::vectorfloat m_values{ 0.1f, 0.2f, 0.3f }; };winrt::observable_vector_base struct MyObservableVector :implementsMyObservableVector, IObservableVectorfloat, IVectorfloat, IVectorViewfloat, IIterablefloat,winrt::observable_vector_baseMyObservableVector, float {auto get_container() const noexcept{return m_values;}auto get_container() noexcept{return m_values;}private:std::vectorfloat m_values{ 0.1f, 0.2f, 0.3f }; };winrt::map_view_base struct MyMapView :implementsMyMapView, IMapViewwinrt::hstring, int, IIterableIKeyValuePairwinrt::hstring, int,winrt::map_view_baseMyMapView, winrt::hstring, int {auto get_container() const noexcept{return m_values;}private:std::mapwinrt::hstring, int m_values{{ LAliceBlue, 0xfff0f8ff }, { LAntiqueWhite, 0xfffaebd7 }}; };winrt::map_base  struct MyMap :implementsMyMap, IMapwinrt::hstring, int, IMapViewwinrt::hstring, int, IIterableIKeyValuePairwinrt::hstring, int,winrt::map_baseMyMap, winrt::hstring, int {auto get_container() const noexcept{return m_values;}auto get_container() noexcept{return m_values;}private:std::mapwinrt::hstring, int m_values{{ LAliceBlue, 0xfff0f8ff }, { LAntiqueWhite, 0xfffaebd7 }}; };winrt::observable_map_base struct MyObservableMap :implementsMyObservableMap, IObservableMapwinrt::hstring, int, IMapwinrt::hstring, int, IMapViewwinrt::hstring, int, IIterableIKeyValuePairwinrt::hstring, int,winrt::observable_map_baseMyObservableMap, winrt::hstring, int {auto get_container() const noexcept{return m_values;}auto get_container() noexcept{return m_values;}private:std::mapwinrt::hstring, int m_values{{ LAliceBlue, 0xfff0f8ff }, { LAntiqueWhite, 0xfffaebd7 }}; };
http://www.zqtcl.cn/news/700008/

相关文章:

  • 三明网站seo上海中学分数线
  • 青岛谷歌网站建设网站建站公司排名
  • 成都旅游网站建设规划windows优化大师官方
  • 福永网站建设公司哪家好财务公司承兑汇票
  • 青岛快速建站模板制作公司网页什么价位
  • 网站建设公司的经营范围wordpress设置文本编辑器
  • 做网站用微软雅黑侵权吗wordpress 同类文章
  • 免费下载建设银行官方网站自己做网站犯法吗
  • 手机网站html代码附近做广告牌的店
  • 建设和优化网站的步骤wordpress 模板 含数据库
  • 太原制作网站的工作室wordpress弹幕播放器
  • 英语网站开发菏泽做网站优化的
  • 宜昌建设网站公司做网站语言服务器 空间
  • 湖南做网站价格广州网站建设哪家便宜
  • 建筑工程素材资源网站中山做网站建设联系电话
  • 做网站关键词集团网站群建设方案
  • 网站开发有哪些课程网站开发好要租服务器吗
  • 鲜花店网站建设的规模设想网站之间的差异
  • 网站怎么在百度做推广郑州建网站
  • 机关门户网站建设顺义做网站
  • 网站开发公司东莞环球军事头条
  • 企业网站管理系统添加教程如何用python开发网页
  • 公司网站建设需要资质wordpress admin
  • 万维网网站301重定向怎么做国家城乡建设规划部网站
  • 现在的网站内容区域做多宽俄文网站开发翻译
  • 上海闵行建设局官方网站做电影网站的流程
  • 怎样做水族馆网站wordpress第三方订阅地址
  • 东莞做网站注意事项如何查网站的百度快照
  • 做资源网站需要什么郑州哪有做网站的公司
  • 不属于网站架构开发一个游戏软件多少钱