您的位置:首页 > 编程语言 > C语言/C++

C++ 编程技巧积累 (Update Continuously)

2014-12-25 17:50 239 查看
最近写C++或者Python的过程中发现,好多函数的调用形式总是记不清楚,需要搜索或者查官方文档。于是乎希望能进一步熟悉这些函数的使用,这里先一点点的记录C++一些函数的使用,以便以后过来查阅。

1. 如何拼接两个vector

在C++中很多功能不像Python中那么方便,比如说要拼接两个vector,在C++中就需要自己实现。但是vector有一个非常好的函数可以简便的实现该功能,那就是insert函数。查看文档可以知道,该函数有多重重载形式,其中一个就是

void insert (iterator position, InputIterator first, InputIterator last);

看到这里就知道怎么拼接了吧,上代码。

#include <iostream>
#include <vector>

using namespace std;

vector<int> combine(vector<int> &a, vector<int> &b)
{
vector<int> ta = a;
vector<int> tb = b;
tb.insert(tb.begin(), ta.begin(), ta.end());
return tb;
}

int main()
{
vector<int> a;
vector<int> b;

a.push_back(1);
a.push_back(2);

b.push_back(3);
b.push_back(4);

vector<int> ans = combine(a, b);
for(vector<int>::iterator it=ans.begin(); it!=ans.end(); ++it)
{
cout << *it << endl;
}
return 0;
}

使用vector的insert方法就能够方便的将两个vector进行拼接了。

2. 反转vector

经常会遇到一些情况,我们希望反转一个vector,但是我们又不愿意自己写一个函数来完成这个,虽然说这个函数本来就很简单,那么<algorithm>中的reverse函数可以帮到你了。首先来看看函数的定义:

template <class BidirectionalIterator>
void reverse (BidirectionalIterator first, BidirectionalIterator last);


使用这个函数的时候,我们只需要把vector的首尾iterator传进去即可。

int temp[] = {1, 2, 3};
vector<int> v(temp, temp+3);
reverse(v.begin(), v.end());


3. 快速输出容器的内容

很多时候想查看容器里的内容,习惯写for循环,但是感觉不方便,而且如果要写iterator的话,总是for循环内一堆长长的内容。现在有一好的办法就是使用copy函数,将指定容器内的内容用iterator的方式输出到ostream_iterator中,这样一个copy函数就能方便的输出container的内容。注意下面代码中的iota函数是C++11特性。

vector<int> container(6);
iota(container.begin(), container.end(), 1);
random_shuffle(container.begin(), container.end());
copy(container.begin(), container.end(), ostream_iterator<int>(cout, " "));
cout << endl;
return 0;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: