前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >在set中已经 存在,返回<x在set中的位置,false>

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

原创
作者头像
用户7737280
发布2024-08-24 11:54:28
450
发布2024-08-24 11:54:28

函数声明

功能介绍

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();

}

}

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档