举一个简单的stl例子
时间: 2024-04-05 15:11:06 浏览: 20
好的,这里举一个简单的STL例子,使用vector容器存储整型数据,并进行遍历和输出:
```c++
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector<int> vec = {1, 2, 3, 4, 5}; // 创建一个存储整型数据的vector容器
// 遍历vector容器并输出每个元素
for (auto it = vec.begin(); it != vec.end(); ++it) {
cout << *it << " ";
}
return 0;
}
```
输出结果为:1 2 3 4 5
这个例子中使用了STL中的vector容器,它可以动态地存储元素,并且支持随机访问和动态扩容等操作。在遍历时使用了迭代器,它是STL中的一个通用概念,用于遍历容器中的元素。
相关问题
举一个函数对象在stl中应用的例子
在STL中,函数对象被广泛应用于各种算法和容器。举一个例子,我们可以使用函数对象`std::less`来比较两个值的大小关系。这个函数对象可以作为参数传递给STL中的许多算法和容器,比如`std::sort`、`std::set`等等。
例如,下面的代码使用`std::less`和`std::sort`函数来对一个整数数组进行排序:
```c++
#include <iostream>
#include <algorithm>
#include <vector>
int main()
{
std::vector<int> vec {5, 2, 9, 1, 3};
std::sort(vec.begin(), vec.end(), std::less<int>());
for (auto i : vec)
std::cout << i << " ";
return 0;
}
```
在这个例子中,我们使用了`std::less<int>()`函数对象来比较整数的大小。这个函数对象可以被`std::sort`算法所使用,以决定数组中元素的顺序。最终的输出结果是一个有序的整数数组:1 2 3 5 9。
举一个uninitialized_copy的例子
当然,我能回答你的问题!uninitialized_copy 是 STL 中的一个算法,用于将一个区间内的元素复制到另一个区间内,但不同于 copy 算法的是,uninitialized_copy 不对目标区间元素进行初始化。下面是一个使用 uninitialized_copy 的例子:
```cpp
#include <iostream>
#include <memory>
#include <algorithm>
#include <string>
int main()
{
std::string src[] = {"hello", "world"};
std::size_t n = std::size(src);
// 使用 uninitialized_copy 复制到目标区间时,必须保证目标区间有足够的空间
std::unique_ptr<std::string[]> dest(new std::string[n]);
// 进行 uninitialized_copy
std::uninitialized_copy(src, src+n, dest.get());
// 打印目标区间的内容
std::cout << "copied values:";
for (std::size_t i=0; i<n; ++i)
std::cout << ' ' << dest[i];
std::cout << '\n';
// 手动对目标区间进行析构操作
for (std::size_t i=0; i<n; ++i)
dest[i].~basic_string();
return 0;
}
```
这个例子中,我们首先声明了一个 `src` 数组,并将其拷贝到 `dest` 数组中,使用了 uninitialized_copy 算法。需要注意的是,在使用 uninitialized_copy 时,需要确保目标区间有足够的空间来存储源区间的元素。此外,由于目标区间没有被初始化,因此在使用前需要对其进行构造操作,使用后需要手动进行析构操作。