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

销售网站免费做软件开发培训费用

销售网站免费做,软件开发培训费用,wordpress 文章推荐一篇,安徽建设网站公司简介#xff1a; CSDN博客专家#xff0c;专注Android/Linux系统#xff0c;分享多mic语音方案、音视频、编解码等技术#xff0c;与大家一起成长#xff01; 优质专栏#xff1a;Audio工程师进阶系列【原创干货持续更新中……】#x1f680; 人生格言#xff1a; 人生… 简介 CSDN博客专家专注Android/Linux系统分享多mic语音方案、音视频、编解码等技术与大家一起成长 优质专栏Audio工程师进阶系列【原创干货持续更新中……】 人生格言 人生从来没有捷径只有行动才是治疗恐惧和懒惰的唯一良药. 更多原创,欢迎关注Android系统攻城狮 1.前言 本篇目的理解Android12之容器类SortedVector、KeyedVector、Vector、VectorImpl之间联系。 2.SortedVector、KeyedVector、Vector、VectorImpl介绍 在Android中SortedVector、KeyedVector、Vector和VectorImpl是用于数据存储和管理的容器类。 SortedVector 原理SortedVector是一个有序容器它基于二进制搜索树Binary Search Tree实现。它会在插入元素时自动维持元素的有序性并提供了一些方法来搜索、插入、删除和访问元素。作用SortedVector可用于需要有序元素管理的场景比如在大量数据中进行快速的查找、插入和删除等操作。 KeyedVector 原理KeyedVector是一种键值对容器它基于哈希表Hash Table实现。每个键由一个哈希函数计算得到一个索引然后将值存储在该索引位置上。在具有相同索引的情况下它会处理冲突并保证键的唯一性。作用KeyedVector可用于需要通过键来访问值的场景比如实现高效的索引、查找和删除操作。 Vector 原理Vector是一个动态数组它可以根据需要动态增加或减少容量。Vector在内部使用数组来存储元素并提供了一些方法用于插入、删除、访问和修改元素。作用Vector可用于需要动态管理大小的数组操作比如在需要经常插入和删除元素的场景中。 VectorImpl 原理VectorImpl是Vector的底层实现它提供了对底层数组的直接访问和操作。它主要用于实现Vector的相关方法。作用VectorImpl在Vector类中作为内部实现的一部分用于提供底层数组的管理和操作功能。 总结 SortedVector和KeyedVector适用于需要对数据进行排序或通过键值对进行访问的场景而Vector适用于需要动态管理数组大小的场景。VectorImpl则是Vector类的底层实现提供对底层数组的直接操作。 3.SortedVector、KeyedVector、Vector、VectorImpl关系类图 #mermaid-svg-hDZieqSKAZcyddyI {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-hDZieqSKAZcyddyI .error-icon{fill:#552222;}#mermaid-svg-hDZieqSKAZcyddyI .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-hDZieqSKAZcyddyI .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-hDZieqSKAZcyddyI .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-hDZieqSKAZcyddyI .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-hDZieqSKAZcyddyI .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-hDZieqSKAZcyddyI .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-hDZieqSKAZcyddyI .marker{fill:#333333;stroke:#333333;}#mermaid-svg-hDZieqSKAZcyddyI .marker.cross{stroke:#333333;}#mermaid-svg-hDZieqSKAZcyddyI svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-hDZieqSKAZcyddyI g.classGroup text{fill:#9370DB;fill:#131300;stroke:none;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:10px;}#mermaid-svg-hDZieqSKAZcyddyI g.classGroup text .title{font-weight:bolder;}#mermaid-svg-hDZieqSKAZcyddyI .nodeLabel,#mermaid-svg-hDZieqSKAZcyddyI .edgeLabel{color:#131300;}#mermaid-svg-hDZieqSKAZcyddyI .edgeLabel .label rect{fill:#ECECFF;}#mermaid-svg-hDZieqSKAZcyddyI .label text{fill:#131300;}#mermaid-svg-hDZieqSKAZcyddyI .edgeLabel .label span{background:#ECECFF;}#mermaid-svg-hDZieqSKAZcyddyI .classTitle{font-weight:bolder;}#mermaid-svg-hDZieqSKAZcyddyI .node rect,#mermaid-svg-hDZieqSKAZcyddyI .node circle,#mermaid-svg-hDZieqSKAZcyddyI .node ellipse,#mermaid-svg-hDZieqSKAZcyddyI .node polygon,#mermaid-svg-hDZieqSKAZcyddyI .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-hDZieqSKAZcyddyI .divider{stroke:#9370DB;stroke:1;}#mermaid-svg-hDZieqSKAZcyddyI g.clickable{cursor:pointer;}#mermaid-svg-hDZieqSKAZcyddyI g.classGroup rect{fill:#ECECFF;stroke:#9370DB;}#mermaid-svg-hDZieqSKAZcyddyI g.classGroup line{stroke:#9370DB;stroke-width:1;}#mermaid-svg-hDZieqSKAZcyddyI .classLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5;}#mermaid-svg-hDZieqSKAZcyddyI .classLabel .label{fill:#9370DB;font-size:10px;}#mermaid-svg-hDZieqSKAZcyddyI .relation{stroke:#333333;stroke-width:1;fill:none;}#mermaid-svg-hDZieqSKAZcyddyI .dashed-line{stroke-dasharray:3;}#mermaid-svg-hDZieqSKAZcyddyI #compositionStart,#mermaid-svg-hDZieqSKAZcyddyI .composition{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-hDZieqSKAZcyddyI #compositionEnd,#mermaid-svg-hDZieqSKAZcyddyI .composition{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-hDZieqSKAZcyddyI #dependencyStart,#mermaid-svg-hDZieqSKAZcyddyI .dependency{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-hDZieqSKAZcyddyI #dependencyStart,#mermaid-svg-hDZieqSKAZcyddyI .dependency{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-hDZieqSKAZcyddyI #extensionStart,#mermaid-svg-hDZieqSKAZcyddyI .extension{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-hDZieqSKAZcyddyI #extensionEnd,#mermaid-svg-hDZieqSKAZcyddyI .extension{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-hDZieqSKAZcyddyI #aggregationStart,#mermaid-svg-hDZieqSKAZcyddyI .aggregation{fill:#ECECFF!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-hDZieqSKAZcyddyI #aggregationEnd,#mermaid-svg-hDZieqSKAZcyddyI .aggregation{fill:#ECECFF!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-hDZieqSKAZcyddyI .edgeTerminals{font-size:11px;}#mermaid-svg-hDZieqSKAZcyddyI :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 继承 关联友元类 继承 继承 继承 KeyedVector DefaultKeyedVector SortedVector friend class VectorTYPE SortedVectorImpl VectorImpl Vector typedef TYPE value_type 4.SortedVector、KeyedVector、Vector、VectorImpl实现 1.VectorImpl定义 system/core/libutils/include/utils/VectorImpl.h class VectorImpl { /*! C-style array access */inline const void* arrayImpl() const { return mStorage; }void* editArrayImpl();/*! vector stats */inline size_t size() const { return mCount; }inline bool isEmpty() const { return mCount 0; }size_t capacity() const;ssize_t setCapacity(size_t size);ssize_t resize(size_t size);/*! append/insert another vector or array */ssize_t insertVectorAt(const VectorImpl vector, size_t index);ssize_t appendVector(const VectorImpl vector);ssize_t insertArrayAt(const void* array, size_t index, size_t length);ssize_t appendArray(const void* array, size_t length);/*! add/insert/replace items */ssize_t insertAt(size_t where, size_t numItems 1);ssize_t insertAt(const void* item, size_t where, size_t numItems 1);void pop();void push();void push(const void* item);ssize_t add();ssize_t add(const void* item);ssize_t replaceAt(size_t index);ssize_t replaceAt(const void* item, size_t index);class SortedVectorImpl : public VectorImpl {public:SortedVectorImpl(size_t itemSize, uint32_t flags);explicit SortedVectorImpl(const VectorImpl rhs);virtual ~SortedVectorImpl();SortedVectorImpl operator (const SortedVectorImpl rhs); //! finds the index of an itemssize_t indexOf(const void* item) const;//! finds where this item should be insertedsize_t orderOf(const void* item) const;//! add an item in the right place (or replaces it if there is one)ssize_t add(const void* item);//! merges a vector into this onessize_t merge(const VectorImpl vector); }; };2.VectorImpl实现 system/core/libutils/VectorImpl.cpp VectorImpl::VectorImpl(size_t itemSize, uint32_t flags): mStorage(nullptr), mCount(0), mFlags(flags), mItemSize(itemSize) { }VectorImpl::VectorImpl(const VectorImpl rhs): mStorage(rhs.mStorage), mCount(rhs.mCount),mFlags(rhs.mFlags), mItemSize(rhs.mItemSize) {if (mStorage) {SharedBuffer::bufferFromData(mStorage)-acquire();} }3.SortedVector定义与实现 system/core/libutils/include/utils/SortedVector.h template class TYPE class SortedVector : private SortedVectorImpl {friend class VectorTYPE; };templateclass TYPE inline SortedVectorTYPE::SortedVector(): SortedVectorImpl(sizeof(TYPE),((traitsTYPE::has_trivial_ctor ? HAS_TRIVIAL_CTOR : 0)|(traitsTYPE::has_trivial_dtor ? HAS_TRIVIAL_DTOR : 0)|(traitsTYPE::has_trivial_copy ? HAS_TRIVIAL_COPY : 0))) { }templateclass TYPE inline SortedVectorTYPE::SortedVector(const SortedVectorTYPE rhs): SortedVectorImpl(rhs) { }templateclass TYPE inline SortedVectorTYPE::~SortedVector() {finish_vector(); }templateclass TYPE inline SortedVectorTYPE SortedVectorTYPE::operator (const SortedVectorTYPE rhs) {SortedVectorImpl::operator (rhs);return *this; }templateclass TYPE inline const SortedVectorTYPE SortedVectorTYPE::operator (const SortedVectorTYPE rhs) const {SortedVectorImpl::operator (rhs);return *this; }4.KeyedVector定义与实现 system/core/libutils/include/utils/KeyedVector.h template typename KEY, typename VALUE class KeyedVector { public:typedef KEY key_type;typedef VALUE value_type;inline KeyedVector(); };template typename KEY, typename VALUE class DefaultKeyedVector : public KeyedVectorKEY, VALUE { public:inline DefaultKeyedVector(const VALUE defValue VALUE());const VALUE valueFor(const KEY key) const;private:VALUE mDefault; };// ---------------------------------------------------------------------------templatetypename KEY, typename VALUE inline KeyedVectorKEY,VALUE::KeyedVector() { }templatetypename KEY, typename VALUE inline bool KeyedVectorKEY,VALUE::isIdenticalTo(const KeyedVectorKEY,VALUE rhs) const {return mVector.array() rhs.mVector.array(); }templatetypename KEY, typename VALUE inline ssize_t KeyedVectorKEY,VALUE::indexOfKey(const KEY key) const {return mVector.indexOf( key_value_pair_tKEY,VALUE(key) ); }templatetypename KEY, typename VALUE inline const VALUE KeyedVectorKEY,VALUE::valueFor(const KEY key) const {ssize_t i this-indexOfKey(key);LOG_ALWAYS_FATAL_IF(i0, %s: key not found, __PRETTY_FUNCTION__);return mVector.itemAt(i).value; }templatetypename KEY, typename VALUE inline const VALUE KeyedVectorKEY,VALUE::valueAt(size_t index) const {return mVector.itemAt(index).value; }5.Vector定义与实现 system/core/libutils/include/utils/Vector.h template class TYPE class Vector : private VectorImpl { public:typedef TYPE value_type;/*!* Constructors and destructors*/Vector();Vector(const VectorTYPE rhs);explicit Vector(const SortedVectorTYPE rhs);virtual ~Vector();/*! copy operator */const VectorTYPE operator (const VectorTYPE rhs) const;VectorTYPE operator (const VectorTYPE rhs);const VectorTYPE operator (const SortedVectorTYPE rhs) const;VectorTYPE operator (const SortedVectorTYPE rhs);/** empty the vector*/};templateclass TYPE inline VectorTYPE::Vector(): VectorImpl(sizeof(TYPE),((traitsTYPE::has_trivial_ctor ? HAS_TRIVIAL_CTOR : 0)|(traitsTYPE::has_trivial_dtor ? HAS_TRIVIAL_DTOR : 0)|(traitsTYPE::has_trivial_copy ? HAS_TRIVIAL_COPY : 0))) { }templateclass TYPE inline VectorTYPE::Vector(const VectorTYPE rhs): VectorImpl(rhs) { }templateclass TYPE inline VectorTYPE::Vector(const SortedVectorTYPE rhs): VectorImpl(static_castconst VectorImpl(rhs)) { }templateclass TYPE inline VectorTYPE::~Vector() {finish_vector(); }templateclass TYPE inline VectorTYPE VectorTYPE::operator (const VectorTYPE rhs) {VectorImpl::operator (rhs);return *this; }
http://wiki.neutronadmin.com/news/364339/

相关文章:

  • 威海网站建设wordpress vip 插件
  • 做网页怎么建站点安阳网站制作价格
  • app应用网站源码二级分销系统开发
  • 重庆网站建设公司费用58同城建筑招聘网最新招聘
  • 如何做网站清风制作手机域名做网站中国谁第一家
  • 仿起点小说网站开发网站 营销方案
  • 网站建设公司自贡管理咨询网站建设
  • 珠海手机网站制作找做金融的网站有哪些方面
  • 网站怎么做qq微信登陆界面利于优化的网站
  • 建设银行网站会员注销网站建设都包括哪些内容
  • 盐城网站建设找哪家好安卓aso优化排名
  • 有域名如何建网站电商网站开发技术与服务器
  • 织梦做网站视频教程网站的宽度
  • ps图做ppt模板下载网站企业网站傻瓜搭建
  • 网站开发郑州百度推广一年多少钱
  • 手机网站生成apppc版网站生成App
  • 有网站代码怎么做网站好的网站建站公司
  • ps网站设计全程绝密dw新建站点
  • 厦门手机网站制作app制作开发公司收费
  • Hdi做指数网站深圳网站建设培训哪家好
  • 机关门户网站app建设思考大型门户网站开发
  • 注销建设工程规划许可证在哪个网站博物馆建设网站的目的及功能
  • 关于美术馆网站建设的方案电子商务网站建设子项目
  • 集团做网站方案制作包含哪些方面福州网站建设推广服务
  • 媒体135网站一流的山西网站建设
  • 补习吧 一家专门做家教的网站开题报告 网站建设
  • 福州短视频seo网站仿别人的网站
  • 做网站都能用什么做wordpress防采集源码
  • 做h5网站pc加手机版要多少钱翻墙在线代理
  • 重庆茂尔建设集团有限公司网站网站开发程序开发