2.1. List

IDisposable

void Dispose();

IEnumerator:IDisposable

bool MoveNext();
void Reset();
object Current{get;}

IEnumerator:IEumerator

new Current{get;}

IEnumerable

IEnumerator GetEnumerator();

IEumerable:IEumerable

new IEumerator<T> GetEnumerator();

ICollection:IEumerable

void CopyTo(Array array,int index);
int Count{get;}
Object SyncRoot{get;}
bool IsSynchronized{get;}

ICollection:IEumerable

// base intreface for all collections,defining enumerator,size,and synchronization methods

int Count{get;}
bool IsReadOnly{get}
void Add(T item);
void Clear();
bool Contains(T item);
// copyto copies a collection into an array,starting at a paricular index into the array
void CopyTo(T[] array,int arrayIndex);    
bool Remove(T item);

IList:ICollection

Object this[int index]{get;set;}
int Add(Object value);
bool Contains(Object value);
void Clear();
bool IsReadOnly{get;}
bool IsFixedSize{get;}
int IndexOf(Object value);
void Insert(int index,Object vlaue);
void Remove(Object value);
void RemoveAt(int index);

IList:IColleciton

//提供索引访问
T this[int index]{get;set;}
int IndexOf(T item);
//inserts value into the list at postion index
void Insert(int index,T item);
void RemoveAt(int index);

IReadOnlyCollection:IEnumerable

int Count{get;}

IReadOnlyList

T this[int index]{get;}

IComparer 对象实现比较查询的是否非常重要的一个接口

int Compare(T x,T y);

IEqualityComparer

bool Equals(Object x,Object y);
int GetHashCode(Object obj);

IEqualityComparer

bool Equals(T x,T y);
int GetHashCode(T obj);

List:IList,IList,IReadOnlyList

1400行,中等复杂
private T[] _items;
private int _size,_version,_syncRoot;  //Capacity内部数组_items[]的当前分配的长度
private static readonly T[] _emptyArray=new T[0]; 
public int Count{get{return _size;}}  //_size和Count是_items[]实际存储的元素个数,并不是分配的个数
pubilc int Capacity{get;set;} //不要手动设置Capacity>0,每次修改都会引发旧数组复制到新数组,重新分配新的内存长度,建立新的数组并赋值给items。设置<=0将清空_items

private bool IsSynchronize{get{return false;}} //非线程安全

Add(T item){}; //1. 检查capacity 2.size的话自增,size可以从0自增(没有数据),或者用ICollection初始化就从那个基础上增加

BinarySearch(T item){} //O(lgn)

InsertRange(int index,IEumerable<T> collection){} //它最奇怪的是不用简单的迭代器,而选择使用ICollection.CopyTo(),应该是CopyTo的效率比迭代器好

Contians(T item);// 这里有个细节是它没有使用==来判断非空对象而是调用了Equals(),这样写应该好处更多,只在null的时候才被迫使用==进行判断

CopyTo(); //内部使用Array.Copy 将内置的_items拷贝到array参数中

Find()/FindAll(){};  //只是使用了for循环而已,逐条判断

FindIndex(){}; //循环

FindLast(){};  //倒过来循环

ForEach(Action<T> action){};  //判断如果是.net4.5以上使用for循环执行action,不是并发,就是一种foreach的封装,估计是历史遗留代码,很鸡肋

GetRange(int index,int count){}; //使用不是逐条insert这种垃圾写法,用的是Array.Copy()  newlist._items ,也只有类内部可以这样调用,外部的话可以用CopyTo

RemoveAt(int index){}; //原数组复制,去掉中间的那个数据,Array.Copy(_items,index+1,_items,index,_size-index);并且把最后一位设置成default(T)

转载于:https://www.cnblogs.com/zhangrCsharp/p/7695541.html

当运行"./main"命令时,出现了错误"./main: error while loading shared libraries: libevent-2.1.so.6: cannot open shared object file: No such file or directory"。这个错误说明在运行该程序时找不到名为"libevent-2.1.so.6"的共享库文件。这可能是因为该共享库文件不存在或者路径配置不正确。 根据引用和引用的信息,错误信息中提到的共享库文件"libevent-2.1.so.6"是缺失或无法打开的。这可能是由于库文件被删除、移动或者名称不一致等原因导致的。 根据引用的信息,一种解决方法是通过创建软连接来解决。你可以使用以下命令创建一个指向正确路径的软连接: ```shell ln -s /usr/local/lib/libevent-2.1.so.7 /usr/lib64/libevent-2.1.so.6 ``` 这样,当程序在运行时,它将在/usr/lib64/libevent-2.1.so.6路径下找到所需的共享库文件。 请注意,你需要确保"/usr/local/lib/libevent-2.1.so.7"是存在的,并且与你的程序兼容。另外,你也可以检查你的路径配置是否正确,以确保程序能够找到正确的共享库文件。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [./test1: error while loading shared libraries: libevent-2.1.so.7: cannot open shared object file](https://blog.csdn.net/dongfanghe123/article/details/128917851)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [error while loading shared libraries: libstdc++.so.6:cannot open shared object file:](https://download.csdn.net/download/weixin_38719719/13698954)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [Memcached 报错:/usr/local/bin/memcached: error while loading shared libraries: libevent-2.1.so.7](https://blog.csdn.net/VillianTsang/article/details/104931063)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值