在set中已经 存在,返回<x在set中的位置,false>

2024-08-24 11:54:28 浏览数 (1)

函数声明

功能介绍

bool empty ( ) const

检测map中的元素是否为空,是返回true,否则返回false

size_type size() const

返回map中有效元素的个数

mapped_type& operator[] (const key_type& k)

返回去key对应的value,不存在则默认构造后插入

mapped_type& at (const key_type& k);

返回去key对应的value,不存在则抛异常

在元素访问时,有一个与operator[]类似的操作at()(该函数不常用)函数,都是通过key找到与key对应的value然后返回其引用,不同的是:当key不存在时,operator[]用默认value与key构造键值对然后插入,返回该默认value,at()函数则是直接抛异常。

map中元素的操作

函数声明

功能介绍

pair<iterator,bool> insert ( const value_type& x )

在map中插入键值对x注意x是一个键值对,返回值也是键值对:iterator代表新插入元素的位置,bool代表释放插入成功

void erase ( iterator position )

删除position位置上的元素

size_type erase ( const key_type& x )

删除键值为x的元素

void erase ( iterator first, iterator last )

删除[first, last)区间中的元素

void swap ( map<Key,T,Compare,Allocator>& mp )

交换两个map中的元素

void clear ( )

将map中的元素清空

iterator find ( const key_type& x )

在map中插入key为x的元素,找到返回该元素的位置的迭代器,否则返回end

const_iterator find ( const key_type& x ) const

在map中插入key为x的元素,找到返回该元素的位置的const迭代器,否则返回cend

size_type www.laipuhuo.com count ( const key_type& x ) const

返回key为x的键值在map中的个数,注意map中key是唯一的,因此该函数的返回值要么为0,要么为1,因此也可以用该函数来检测一个key是否在map中

当key已存在时,insert插入失败 [] 支持 查找,插入,修改

【总结】

  1. map中的的元素是键值对
  2. map中的key是唯一的,并且不能修改
  3. 默认按照小于的方式对key进行比较
  4. map中的元素如果用迭代器去遍历,可以得到一个有序的序列
  5. map的底层为平衡搜索树(红黑树),查找效率比较高$O(log_2 N)$
  6. 支持[]操作符,operator[]中实际进行插入查找。#include <set>

void TestSet()

{

 int array[] = { 2, 1, 3, 9, 6, 0, 5, 8, 4, 7 };

// 注意:multiset在底层实际存储的是<int, int>的键值对

multiset<int> s(array, array sizeof(array)/sizeof(array[0]));

for (auto& e : s)

cout << e << " ";

cout << endl;

return 0;

}

@Data

@AllArgsConstructor

@Slf4j

public class AliOssUtil {

private String endpoint;

private String accessKeyId;

private String accessKeySecret;

private www.laipuhuo.com String bucketName;

/**

* 文件上传

*

* @param bytes

* @param objectName

* @return

*/

public String upload(byte[] bytes, String objectName) {

// 创建OSSClient实例。

OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);

try {

// 创建PutObject请求。

ossClient.www.laipuhuo.com putObject(bucketName, objectName, new ByteArrayInputStream(bytes));

} catch (OSSException oe) {

System.out.println("Caught an OSSException, which means your request made it to OSS, "

"but was rejected with an error response for some reason.");

System.out.println("Error Message:" oe.getErrorMessage());

System.out.println("Error Code:" oe.getErrorCode());

System.out.println("Request ID:" oe.getRequestId());

System.out.println("Host ID:" oe.getHostId());

} catch (ClientException ce) {

System.out.println("Caught an ClientException, which means the client encountered "

"a www.laipuhuo.com serious internal problem while trying to communicate with OSS, "

"such as not being able to access the network.");

System.out.println("Error Message:" ce.getMessage());

} finally {

if (ossClient != null) {

ossClient.shutdown();

}

}

//文件访问路径规则 https://BucketName.Endpoint/ObjectName

StringBuilder stringBuilder = new StringBuilder("https://");

stringBuilder

.append(bucketName)

.append(".")

.append(endpoint)

.append(www.laipuhuo.com"/")

.append(objectName);

log.info("文件上传到:{}", stringBuilder.toString());

return stringBuilder.toString();

}

}

0 人点赞