C++ 编程技巧积累 (Update Continuously)
2014-12-25 17:50
239 查看
最近写C++或者Python的过程中发现,好多函数的调用形式总是记不清楚,需要搜索或者查官方文档。于是乎希望能进一步熟悉这些函数的使用,这里先一点点的记录C++一些函数的使用,以便以后过来查阅。
1. 如何拼接两个vector
在C++中很多功能不像Python中那么方便,比如说要拼接两个vector,在C++中就需要自己实现。但是vector有一个非常好的函数可以简便的实现该功能,那就是insert函数。查看文档可以知道,该函数有多重重载形式,其中一个就是
看到这里就知道怎么拼接了吧,上代码。
使用vector的insert方法就能够方便的将两个vector进行拼接了。
2. 反转vector
经常会遇到一些情况,我们希望反转一个vector,但是我们又不愿意自己写一个函数来完成这个,虽然说这个函数本来就很简单,那么<algorithm>中的reverse函数可以帮到你了。首先来看看函数的定义:
使用这个函数的时候,我们只需要把vector的首尾iterator传进去即可。
3. 快速输出容器的内容
很多时候想查看容器里的内容,习惯写for循环,但是感觉不方便,而且如果要写iterator的话,总是for循环内一堆长长的内容。现在有一好的办法就是使用copy函数,将指定容器内的内容用iterator的方式输出到ostream_iterator中,这样一个copy函数就能方便的输出container的内容。注意下面代码中的iota函数是C++11特性。
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;
相关文章推荐
- C++主题年技巧积累#2——我被static撞了一下腰
- C++主题年技巧积累#2——我被static撞了一下腰
- C++主题年技巧积累#2——我被static撞了一下腰
- C++主题年技巧积累#1——UltraEdit的代码美化
- C++主题年技巧积累#2——我被static撞了一下腰
- C++ 编程技巧
- C++主题年技巧积累#1——UltraEdit的代码美化
- C++主题年技巧积累#1——UltraEdit的代码美化
- C++主题年技巧积累#2——我被static撞了一下腰
- C++主题年技巧积累#1——UltraEdit的代码美化
- C++主题年技巧积累#1——UltraEdit的代码美化
- C++主题年技巧积累#2——我被static撞了一下腰
- C++ 编程技巧
- C++主题年技巧积累#2——我被static撞了一下腰
- C++主题年技巧积累#1——UltraEdit的代码美化
- C++主题年技巧积累#1——UltraEdit的代码美化
- C++主题年技巧积累#1——UltraEdit的代码美化
- C++编程技巧
- C++主题年技巧积累#1——UltraEdit的代码美化
- C++主题年技巧积累#1——UltraEdit的代码美化