vector容器的swap方法
一,百度百科介绍计算机中swap函数很多,比如字符串交换(swap)swap操作实现交换两个容器内所有元素的功能。要交换的容器的类型必须匹配: 必须是相同类型的容器,而且所存储的元素类型也必须相同。调用了swap函数后,右操作数原来存储的元素被存放在左操作数中,反之亦然。vector svec1(10); //vector vith 10 elementsvector svec2(24); //v
一,百度百科介绍
计算机中swap函数很多,比如字符串交换(swap)
swap操作实现交换两个容器内所有元素的功能。要交换的容器的类型必须匹配: 必须是相同类型的容器,而且所存储的元素类型也必须相同。调用了swap函数后,右操作数原来存储的元素被存放在左操作数中,反之亦然。
vector svec1(10); //vector vith 10 elements
vector svec2(24); //vector with 24 elements
svec1.swap(svec2);
执行swap后,容器svec1中存储24个string类型的元素,而svec2则存储10个元素。
关于swap的一个重要问题在于:该操作不会删除或插入任何元素,而且保证在常量时间内实现交换。由于容器内没有移动任何元素,因此迭代器不会失效。
用法
void swap( basic_string &str );
swap()函数把str和本字符串交换。例如:
string first( “This comes first” );
string second( “And this is second” );
first.swap( second );
cout << first << endl;
cout << second << endl;
二,C++ vector容器的swap方法
swap方法可以交换两容器的内容。
例如1:
#include<stdio.h>
#include <string.h>
#include <string>
#include<vector>
using namespace std;
int main()
{
vector<string> v1;
vector<string> v2;
v1.clear(); v2.clear();
char buffer[21];
// 加载字符串到容器v1
for ( int ii=0;ii<3;ii++ )
{
memset(buffer,0,sizeof(buffer));
sprintf(buffer,"v1第%d个字符串。",ii+1);
v1.push_back(buffer);
}
// 加载字符串到容器v2
for ( int ii=0;ii<3;ii++ )
{
memset(buffer,0,sizeof(buffer));
sprintf(buffer,"v2第%d个字符串。",ii+1);
v2.push_back(buffer);
}
// swap 前
printf("swap前:\n");
for( int ii=0;ii<3;ii++) { printf("v1的第%d个元素:%s\n",ii+1,v1[ii].c_str()); };
for( int ii=0;ii<3;ii++) { printf("v2的第%d个元素:%s\n",ii+1,v2[ii].c_str()); };
v1.swap(v2);
// swap 后
printf("swap后:\n");
for( int ii=0;ii<3;ii++) { printf("v1的第%d个元素:%s\n",ii+1,v1[ii].c_str()); };
for( int ii=0;ii<3;ii++) { printf("v2的第%d个元素:%s\n",ii+1,v2[ii].c_str()); };
return 0;
}
执行结果:
swqp前:
v1的第1个元素:v1第1个字符串。
v1的第2个元素:v1第2个字符串。
v1的第3个元素:v1第3个字符串。
v2的第1个元素:v2第1个字符串。
v2的第2个元素:v2第2个字符串。
v2的第3个元素:v2第3个字符串。
swap后:
v1的第1个元素:v2第1个字符串。
v1的第2个元素:v2第2个字符串。
v1的第3个元素:v2第3个字符串。
v2的第1个元素:v1第1个字符串。
v2的第2个元素:v1第2个字符串。
v2的第3个元素:v1第3个字符串。
string类swap用法
#include <iostream>
#include <string>
//#include<vector>
using namespace std;
int main()
{
string first( "This comes first" );
string second( "And this is second" );
first.swap( second );
cout <<"first: "<< first << endl;
cout <<"second: "<< second << endl;
return 0;
}
执行结果:
first: And this is second
second: This comes first
更多推荐
所有评论(0)