c++unique
时间: 2023-06-29 15:07:54 浏览: 136
`std::unique` 是 C++ STL 中的一个算法函数,它可以用来移除容器中的重复元素,并返回指向新的逻辑结尾的迭代器。它的声明如下:
```c++
template<class ForwardIt>
ForwardIt unique(ForwardIt first, ForwardIt last);
template<class ForwardIt, class BinaryPredicate>
ForwardIt unique(ForwardIt first, ForwardIt last, BinaryPredicate p);
```
其中,`unique` 的第一个版本使用 `operator==` 比较元素是否相等,第二个版本使用二元谓词 `p` 进行比较。
`std::unique` 的使用方法如下:
```c++
#include <iostream>
#include <vector>
#include <algorithm>
int main()
{
std::vector<int> v{1,2,2,3,4,4,3};
auto last = std::unique(v.begin(), v.end());
for (auto i = v.begin(); i != last; ++i) {
std::cout << *i << " ";
}
std::cout << '\n';
}
```
输出结果为: `1 2 3 4`。可以看到,所有重复的元素都被移除了。
相关问题
C++ unique_ptr
C++11中的unique_ptr是一种智能指针,它提供了一种独占式拥有其所指向对象的所有权的语义,即同一时间内只能有一个unique_ptr指向一个对象。当unique_ptr被销毁时,它所指向的对象也会被销毁。unique_ptr的使用可以避免内存泄漏和悬空指针等问题。
以下是unique_ptr的基本使用方法:
1. 创建unique_ptr对象
```c++
std::unique_ptr<int> p(new int(10)); // 创建一个指向int类型对象的unique_ptr
```
2. 获取unique_ptr指向的对象
```c++
int a = *p; // 获取unique_ptr指向的对象的值
```
3. 释放unique_ptr指向的对象
```c++
p.reset(); // 释放unique_ptr指向的对象
```
4. 将unique_ptr转移给其他unique_ptr
```c++
std::unique_ptr<int> p1 = std::move(p); // 将p指向的对象的所有权转移给p1
```
需要注意的是,由于unique_ptr的独占性质,不能将一个unique_ptr赋值给另一个unique_ptr或者将一个unique_ptr作为参数传递给一个函数,除非使用std::move进行转移。
阅读全文