set和map的增删查改

本文详细介绍了C++中的set和map容器的使用方法,包括增、删、查、改操作。set用于存储唯一元素并自动排序,map则为键值对的映射。文中列举了各种相关函数,如insert、find、erase等,并通过实例展示了正向遍历、反向遍历、元素插入、删除和查找等操作。
摘要由CSDN通过智能技术生成

一,set用法介绍:
set是单词set(集合)的意思
只有一个键值,set当中不能存储相同的键值
所有的元素都会根据元素的键值自动被排序。(底层检索使用中序遍历算法)

相关函数:

(1)begin:返回一个迭代器,此迭代器指向set中到的第一个元素。
(2)end:返回一个迭代器,此迭代器指向set最后一个元素的下一个位置。
(3)rbegin:返回一个迭代器,此迭代器指向反向set中的第一个元素。
(4)rend:返回一个迭代器,此迭代器指向反向set中最后一个元素之后的位置。
(5)cbegin:返回一个常量迭代器,此迭代器指向set中到的第一个元素。
(6)cend:返回一个迭代器,此迭代器指向set最后一个元素的下一个位置。 (7)clear:清除set的所有元素。
(8)crbegin:返回一个常量迭代器,此迭代器指向反向set中的第一个元素。
(9)crend:返回一个常量迭代器,此迭代器指向反向set中最后一个元素之后的位置。
(10)find:返回一个迭代器,此迭代器指向set中其键与指定键相等到的元素的位置。
(11)insert:将元素或元素范围插入到set中的指定位置。 (12)size:返回set中元素的数量。
(13)swap:交换两个set的元素。

(1)插入(正向遍历):
采用insert()方法把元素插入到集合中,一般按元素值从小到大插入。使用前向迭代器对集合中序遍历,结果正好是元素排序后的结果。

#include<iostream>
#include<set>
using namespace std;
int main()
{
    set<int> s;//创建set集合对象
    s.insert(5);
    s.insert(1);
    s.insert(6);
    s.insert(3);
    s.insert(5);//重复插入5,会失效
    set<int>::iterator it;//定义前向迭代器
    for(it = s.begin();it!=s.end();it++)
    {
        cout<<* it<<" ";
    }
    cout<<endl;
    return 0;
}

输出:1 3 5 6
(2)反向遍历:
使用反向迭代器reverse_iterator可以反向遍历集合,输出的结果正好是集合元素的反向排序结果。它需要用到rbegin()和rend()两个方法,它们分别给出了反向遍历的开始位置和结束位置。

#include<iostream>
#include<set>
using namespace std;
Spring Boot是一个快速开发框架,它提供了许多方便的功能来简化开发。在Spring Boot中,增删查改操作非常容易实现,可以通过使用Spring Data JPA和Spring MVC来实现。 1. 增加操作 在Spring Boot中,增加操作可以使用Spring Data JPA来实现。只需要定义一个实体类和一个Repository接口即可快速实现增加操作。例如: 定义一个实体类: ```java @Entity @Table(name = "user") public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(name = "username") private String username; @Column(name = "password") private String password; // constructor, getter, setter } ``` 定义一个Repository接口: ```java public interface UserRepository extends JpaRepository<User, Long> { } ``` 然后在Controller中进行调用: ```java @RestController @RequestMapping("/api/user") public class UserController { @Autowired private UserRepository userRepository; @PostMapping("/") public User addUser(@RequestBody User user) { return userRepository.save(user); } } ``` 2. 查询操作 查询操作也可以使用Spring Data JPA来实现。只需要定义一个Repository接口即可快速实现查询操作。例如: 定义一个Repository接口: ```java public interface UserRepository extends JpaRepository<User, Long> { List<User> findByUsername(String username); } ``` 然后在Controller中进行调用: ```java @RestController @RequestMapping("/api/user") public class UserController { @Autowired private UserRepository userRepository; @GetMapping("/") public List<User> getUsers() { return userRepository.findAll(); } @GetMapping("/{username}") public List<User> getUserByName(@PathVariable String username) { return userRepository.findByUsername(username); } } ``` 3. 修改操作 修改操作也可以使用Spring Data JPA来实现。只需要定义一个实体类和一个Repository接口即可快速实现修改操作。例如: 定义一个实体类: ```java @Entity @Table(name = "user") public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(name = "username") private String username; @Column(name = "password") private String password; // constructor, getter, setter } ``` 定义一个Repository接口: ```java public interface UserRepository extends JpaRepository<User, Long> { } ``` 然后在Controller中进行调用: ```java @RestController @RequestMapping("/api/user") public class UserController { @Autowired private UserRepository userRepository; @PutMapping("/{id}") public User updateUser(@PathVariable Long id, @RequestBody User newUser) { return userRepository.findById(id).map(user -> { user.setUsername(newUser.getUsername()); user.setPassword(newUser.getPassword()); return userRepository.save(user); }).orElseGet(() -> { newUser.setId(id); return userRepository.save(newUser); }); } } ``` 4. 删除操作 删除操作也可以使用Spring Data JPA来实现。只需要定义一个Repository接口即可快速实现删除操作。例如: 定义一个Repository接口: ```java public interface UserRepository extends JpaRepository<User, Long> { } ``` 然后在Controller中进行调用: ```java @RestController @RequestMapping("/api/user") public class UserController { @Autowired private UserRepository userRepository; @DeleteMapping("/{id}") public void deleteUser(@PathVariable Long id) { userRepository.deleteById(id); } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值