专栏首页AngelNI暑假(补)-2

暑假(补)-2

VECTOR

vector类为内置数组提供了一种替代的表示,通常建议使用vector。(但仍有许多程序环境必须使用内置数组),vector 是C++中的一个容器类型,vector类是随标准C++引入的标准库的一部分。

使用vector必须包含相关的头文件

#include

vector初始化

  1. 1. vector<int> ve(10); //定义已知长度的Vector,初始值默认为0 2. vector<int> ve(10,2); //定义已知长度,并且初值为2的数组 3. int a[4] = {1,2,3,4}; vector< int > ve( a , a+4); //将静态数组拷贝至不定数组 4. vector<int> ve(&a[1] , &a[3] ) //将a[1],a[2]拷贝到不定数组,其实是一个地址的传递 5. vector <int> a(10,2); vector<int > b(a); //vector 被另一个vector初始化 vector<int > c; c = b; //vector 被赋值给另一个vector、 <!--0-->

vector二维数组(输入,输出)

#include<vector>
#include<iostream>
#include<cstring>
using namespace std;
int main()
{
	vector<vector<int> > a;
	vector<int> b;
	int temp;
	int i,j;
	for(i =0;i<5;i++)
	{
		b.clear();
		for(j =0;j<5;j++)
		{
			cin>>temp;
			b.push_back(temp);
		}
		a.push_back(b);
	}
	for(i=0;i<5;i++)
	{
		for(j=0;j<5;j++)
		{
			cout<<a[i][j]<<" ";
		}
		cout<<"\n";
	}
	return 0;
 }

vector字符串数组

vector<string> text;
	string word;
	int a=5; 
	while((a--)&&cin>>word  )//// && 短路问题 
	{
		
		text.push_back(word);
	}
	for(int i=0;i<text.size();i++)
	{
		cout<<text[i]<<" ";
	}

动态空间申请

malloc

#include<iostream>
#include<stdlib.h>
#include<stdio.h>
using namespace std;
int main()
{
	int *p;
	int i;
	p = (int *)malloc(sizeof(int)*5); 
	for(i=0;i<5;i++)
	{
		cin>>p[i];
	}
	for(i=0;i<5;i++)
		cout<<p[i]<<endl;
	
	free(p);
	return 0;
 }

calloc

#include<iostream>
#include<stdlib.h>
#include<stdio.h>
using namespace std;
int main()
{
	int *p;
	int i;
	p = (int *)calloc(sizeof(int),5); 
	for(i=0;i<5;i++)
	{
		cin>>p[i];
	}
	for(i=0;i<5;i++)
		cout<<p[i]<<endl;
	
	free(p);
	return 0;
 }

malloc 与 calloc 在使用方法上基本上是差不多的。malloc它允许从空间内存池中分配内存,malloc()的参数是一个指定所需字节数的整数。colloc与malloc类似,但是主要的区别是存储在已分配的内存空间中的值默认为0,使用malloc时,已分配的内存中可以是任意的值. colloc需要两个参数,第一个是需要分配内存的变量的个数,第二个是每个变量的大小.

二维空间申请

#include<iostream>
#include<stdlib.h>
#include<stdio.h>
using namespace std;
int main()
{
	int ** p;
	int i,j;
	p = (int **)calloc(sizeof(int*),5);
	for(i =0;i<5;i++)
	{
		p[i] = (int *)calloc(sizeof(int),5);
	 } 
	for(i=0;i<5;i++)
		for(j =0;j<5;j++) 
			cin>>p[i][j];
	
	for(i=0;i<5;i++)
		for(j=0;j<5;j++)
			cout<<p[i][j]<<endl;
	
	for (int i= 0; i < 5; i++)
	{
		free(p[i]);						
	}
	free(p);
	return 0;
 }

二维空间与一维空间主要的不同是:二维数组由一维数组组成,申请的空间要分别对每个一维空间申请。释放空间时也是如此,先释放每个一维空间,最后在释放二维空间。

C++ 动态空间申请

#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
    //一维空间申请
	int m=9; 
	int *p= new int[m];
	for(int i=0;i<9;i++)
	{
		cin>>p[i];
	 } 
	for(int i=0;i<9;i++)
		cout<<p[i]<<endl;
	delete []p;
	
	//二维空间申请方法一
	int n=4,m=4;
	int tem =0;
	int **p = new int*[m];
	for(int i=0;i<m;i++)
	{
		p[i] = new int[n]; 
	 }
	for(int i=0;i<m;i++)
	{
		for(int j=0;j<n;j++)
		{
			p[i][j]=tem;
			tem++;
			}
	}
	for(int i=0;i<m;i++)
		for(int j=0;j<n;j++)
			cout<<p[i][j]<<endl;
	
	for(int i=0;i<m;i++)
		delete []p[i]; 
	
	delete []p;
	//二维空间申请方法二
	int (*q)[3] = new int[3][3];
	for(int i=0;i<3;i++)
		for(int j=0;j<3;j++)
			cin>>q[i][j];
	for(int i=0;i<3;i++)
		for(int j=0;j<3;j++)
			cout<<q[i][j]<<setw(3);
	
	delete []q;
	return 0;
}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • LIS + Problem

    让我们举个例子:求 2 7 1 5 6 4 3 8 9 的最长上升子序列。我们定义d(i) (i∈[1,n])来表示前i个数以A[i]结尾的最长上升子序列长度。

    AngelNH
  • 二分图最大匹配

    二分图也叫二部图,设G=(V,E)是一个无向图,如果顶点V可分割为两个互不相交的子集(A,B),并且图中的每条边(i,j)所关联的两个顶点i和j分别属于这两个不...

    AngelNH
  • 查找(上)

    AngelNH
  • 算法分析与设计入门级--递推算法(这个要是学不会,就别学算法了)

    递推法是一种重要的数学方法,在数学的各个领域中都有广泛的运用,也是计算机用于数值计算的一个重要算法。这种算法特点是:一个问题的求解需一系列的计算,在已知条件和所...

    风骨散人Chiam
  • HDU 1875 畅通工程再续(kruskal)

    畅通工程再续 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (J...

    ShenduCC
  • 剑指offer 构建乘积数组

    给定一个数组A[0,1,...,n-1],请构建一个数组B[0,1,...,n-1],其中B中的元素B[i]=A[0]*A[1]*...*A[i-1]*A[i+...

    week
  • 算法-编程的灵魂--八皇后

    对于我们程序员来说,算法是编程的灵魂,算法的好坏与否,也决定了你代码的健壮性。 ----至此,祝愿各位五一节快乐,玩的开心! 下面,看看下面的经典算法,经典的算...

    赵腰静
  • 3555: [Ctsc2014]企鹅QQ

    Description PenguinQQ是中国最大、最具影响力的SNS(Social Networking Services)网站,以实名制为基础,为用户提供...

    attack
  • 【未完成】1050 螺旋矩阵 (25 分)

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

    韩旭051
  • P1147 连续自然数和

    题目描述 对一个给定的自然数M,求出所有的连续的自然数段,这些连续的自然数段中的全部数之和为M。 例子:1998+1999+2000+2001+2002 = 1...

    attack

扫码关注云+社区

领取腾讯云代金券