不要用STL容器vector
时间: 2024-02-28 10:23:09 浏览: 85
好的,如果不使用STL容器vector,可以使用C-style数组来替代。C-style数组是一种简单的固定大小的数组,可以存储单一数据类型的元素。下面是一个示例代码:
```
#include <iostream>
int main() {
const int SIZE = 5;
int arr[SIZE];
// 初始化数组
for (int i = 0; i < SIZE; i++) {
arr[i] = i + 1;
}
// 遍历数组并输出每个元素
for (int i = 0; i < SIZE; i++) {
std::cout << arr[i] << " ";
}
return 0;
}
```
在这个示例中,我们创建了一个大小为5的整数数组,并使用for循环初始化数组中的每个元素。然后使用另一个for循环遍历数组并输出每个元素。
需要注意的是,C-style数组的大小是固定的,不能在运行时动态改变。如果需要动态调整数组大小,可以使用动态内存分配函数如malloc和free,但需要手动管理内存,比较麻烦。所以在实际开发中,可能需要使用STL容器来替代C-style数组,以实现更灵活和方便的数据结构操作。
相关问题
定义一个STL容器vector,任意输入部分数据,并使用下标访问容器vector中的数据 由用户自己输入元素用C++实现
在C++中,STL(标准模板库)提供了一个动态数组容器,称为`vector`。`vector`是一个非常灵活的容器,可以动态增长和缩小,它支持随机访问,这意味着你可以通过下标直接访问任何一个元素。
下面是一个简单的示例代码,展示如何使用C++的`vector`容器来输入一些数据,并使用下标访问这些数据:
```cpp
#include <iostream>
#include <vector>
using namespace std;
int main() {
// 定义一个vector容器,用于存储int类型的元素
vector<int> vec;
// 提示用户输入元素数量
int n;
cout << "请输入要输入的元素数量: ";
cin >> n;
// 根据用户输入的元素数量,动态分配空间
vec.resize(n);
// 提示用户输入具体的元素值,并存储到vector中
cout << "请输入 " << n << " 个整数:" << endl;
for (int i = 0; i < n; ++i) {
cin >> vec[i];
}
// 使用下标访问vector中的元素,并打印
cout << "输入的元素为:" << endl;
for (int i = 0; i < n; ++i) {
cout << vec[i] << " ";
}
cout << endl;
return 0;
}
```
在这个示例中,我们首先包含了必要的头文件`<iostream>`和`<vector>`,然后在`main`函数中定义了一个`vector<int>`类型的容器`vec`。通过`resize`方法来设定容器的大小,并且允许用户输入元素的数量和具体的值。最后,我们通过一个循环使用下标访问`vector`中的每个元素,并将它们打印出来。
c++用STL的容器vector和partition实现快速排序功能。
快速排序是一种基于分治思想的排序算法,可以使用 STL 的容器 vector 和 partition 来实现。
具体实现步骤如下:
1. 定义递归函数 quick_sort(),传入 vector、排序起始位置和排序结束位置;
2. 随机选择一个基准元素 pivot,将 vector 分成两个部分,左边部分的值都小于或等于 pivot,右边部分的值都大于 pivot;
3. 使用 STL 的 partition 算法将 vector 分成两个部分,返回分界点的迭代器;
4. 递归调用 quick_sort() 函数对左右两个部分进行排序,直到排序结束。
下面是实现代码:
```c++
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
void quick_sort(vector<int>& nums, int start, int end) {
if (start >= end) {
return;
}
int pivot = nums[start];
auto iter = partition(nums.begin() + start, nums.begin() + end + 1, [pivot](int x){ return x <= pivot; });
int mid = iter - nums.begin();
quick_sort(nums, start, mid - 1);
quick_sort(nums, mid, end);
}
int main() {
vector<int> nums = {3, 5, 1, 6, 2, 7, 4, 8};
quick_sort(nums, 0, nums.size() - 1);
for (auto num : nums) {
cout << num << " ";
}
cout << endl;
return 0;
}
```
输出结果为:1 2 3 4 5 6 7 8。
阅读全文