📜  将向量分成两半 cpp - C++ (1)

📅  最后修改于: 2023-12-03 15:25:17.140000             🧑  作者: Mango

将向量分成两半 - C++代码实现

有时候我们需要将一个向量按照一定的规则分割成两个向量。这时候,我们可以使用C++中的STL库中的vector容器来实现。

以下是一个将一个vector容器按照中间部分分成两个的示例代码。

#include <iostream>
#include <vector>

using namespace std;

//将一个向量分成两个
template <typename T>
vector<vector<T>> splitVectorInHalf(vector<T> vec)
{
    int vecSize = vec.size() / 2;
    
    vector<T> vecFirstHalf(vec.begin(), vec.begin() + vecSize);
    vector<T> vecSecondHalf(vec.begin() + vecSize, vec.end());
    
    vector<vector<T>> vecSplit {vecFirstHalf, vecSecondHalf};
    
    return vecSplit;
}

int main()
{
    //创建一个整数向量
    vector<int> vec{1, 2, 3, 4, 5, 6, 7, 8, 9};
  
    //将向量分成两半
    vector<vector<int>> vecSplitted = splitVectorInHalf(vec);
  
    //打印结果
    cout << "第一个向量:" << endl;
    for (auto i : vecSplitted[0]) {
        cout << i << " ";
    }
    
    cout << endl << "第二个向量:" << endl;
    for (auto i : vecSplitted[1]) {
        cout << i << " ";
    }

    return 0;
}

输出结果为:

第一个向量:
1 2 3 4
第二个向量:
5 6 7 8 9

在这个示例代码中,我们创建了一个vector容器,然后使用一个名为splitVectorInHalf的函数将其分成两个容器。该函数接受一个vector容器,并将其分成两个长度相同的容器并返回。

这个函数非常简单。它首先计算容器大小的一半(即vecSize),然后使用begin()和end()函数将vector容器分成两个。我们通过拷贝迭代器来实现。最后,我们创建一个包含这两个容器的vector<vector>容器,并将其返回。

在主函数中,我们用cout打印输出结果。每个子向量都被存储在vecSplitted vector<vector>容器中。于是我们可以通过访问该容器的元素来访问这些子向量。

这就是将向量分成两半的示例C++代码。