Vector
#include <cstdio>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
vector< vector<int> > arry; //写成arry(5) 可理解为设定大小5行
vector<int> d; //定义一个一维的数组;
int i, j, k, n;
int number;
scanf("%d", &n );
/*可以这样实现对vector二维的初始化,得到的是n行n列的矩阵*/
for( i=0; i<n; i++ )
{
for( j=0; j<n; j++ )
{
scanf("%d", &number );
d.push_back( number );
}
sort( d.begin(), d.end() ); //排序需要头文件algorithm
arry.push_back( d );
//d.clear(); //清空一维的数组
d.resize(0);
}
/*遍历输出*/
if( arry.empty() )
printf("0\n");
else
{
for( i=0; i<arry.size(); i++ )
{
for( j=0; j<arry[0].size(); j++ )
{
printf("%d ", arry[i][j] );
}
printf("\n");
}
}
return 0;
}
vector的clear操作可以将vector的数据清空,但是vector的容量不会变化,即分配给vector的内存不会收回。
vector<int> num={1,2,3,4,5};
num.clear();
resize()的作用是改变vector中元素的数目。
vector<int> num={1,2,3,4,5};
num.resize(0);
如果n比当前的vector元素数目要小,vector的容量要缩减到resize的第一个参数大小,即n。
并移除那些超出n的元素同时销毁他们。
如果n比当前vector元素数目要大,在vector的末尾扩展需要的元素数目,如果第二个参数val指定了,扩展的新元素初始化为val的副本,否则按类型默认初始化。
注意:如果n大于当前的vector的容量(是容量,并非vector的size),将会引起自动内存分配。现有的指针、迭代器等将会失效。
resize(0)即可将vector中的元素清空,同时容量也清空。
字符串
strcpy(s1, s2);
复制字符串 s2 到字符串 s1。
strcat(s1, s2);
连接字符串 s2 到字符串 s1 的末尾。
strlen(s1);
返回字符串 s1 的长度。
strcmp(s1, s2);
如果 s1 和 s2 是相同的,则返回 0;如果 s1<s2 则返回值小于 0;如果 s1>s2 则返回值大于 0。
strchr(s1, ch);
返回一个指针,指向字符串 s1 中字符 ch 的第一次出现的位置。
strstr(s1, s2);
返回一个指针,指向字符串 s1 中字符串 s2 的第一次出现的位置。
String类
#include <string>
// 复制 str1 到 str3
str3 = str1;
cout << "str3 : " << str3 << endl;
// 连接 str1 和 str2
str3 = str1 + str2;
cout << "str1 + str2 : " << str3 << endl;
// 连接后,str3 的总长度
len = str3.size();
cout << "str3.size() : " << len << endl;