栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

day 1

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

day 1

//主要是北京acm视频里的

#1.用谁 谁效率高 数据量高时 用谁(scanf)

        谁好写 用谁(控制输出小数时,用printf)

#2.写题时可以不释放动态开辟的内存

#3.

有点像类

 结构体前的struct是可以省的 , 不用再写typedef了

结构体里面可以加构造函数,应该是赋值用的把,可以有默认值,这个函数不用写类型

#4.库

#include
#include
using namespace std;
int main()
{
	
	char str3[100];
	memset(str3, 0, sizeof(str3));
	cout << str3 << endl;
	cout << strlen(str3);
	return 0;
}

memset填充时是按字节填充的,这里每个字节都填0,字符又是按ascii码来的,所以不显示,长度为0(字符串以这个为结束标志的),据说memset要比for(自己写的)快

c的这个快排调用复杂 

c++的

#include
#include
using namespace std;
int main()
{
	vector list;
	list.push_back(1);
	list.push_back(2);
	list.push_back(3);
	cin.get();
	cin.get();
}

vs确实好用,打断点后是鼠标移到list这里是可以看见val是多少的

vector更像是数据类型(也可以说是类罢,毕竟都有push_back的函数了)把,不像c的库是函数,可以说是链表(动态开辟)+数组(下标访问)

#include
#include
using namespace std;
int main()
{	
	vector arr(100);
	vector list;
	//for (int i = 0; i < 100; i++)
	//{
	//	scanf("%d", &arr[i]);//scanf非法输入就会停止
	//	cout << arr[i] << endl;//是有默认值的为0
	//}
	for (int i = 0; i < 10; i++)
	{
		int a;
		cin >> a;
		list.push_back(a);
		 // 报越界的错误了
		cout << list[i] << endl;
	}
	cin.get();
	cin.get();
	return 0;
}

两种vector,一种给长度了,对应两种输入方式

#include
#include
using namespace std;
int main()
{ // 数组可以这样遍历用指针
	vectorarr1(100);
	for (int i = 0; i < 10; i++)
	{
		scanf("%d", &arr1[i]);
		cout << arr1[i] << endl;
	}
	vector::iterator p2;
	for (p2 = arr1.begin(); p2 != arr1.end(); p2++)
	{
		cout << *p2 << " ";
	}
	cout << endl;
	
	return 0;
}

又是一天qaq玩了半天睡了半天呜uu五五五五

又认识了2个函数,begin和end , p2!=arr1.end 这里end是最后一个元素的后面 换成字符串应该就是后面那个

#include
#include
using namespace std;
int main()
{
	vectorarr1(100);
	vector::iterator p;
	scanf("%c", &arr1[0]);
	scanf("%c", &arr1[1]);
	printf("%d", arr1.size());
	return 0;
}

我这里arr.size()不管输入还是没输入,还是字符数组,都是整个vector数组的大小,但是申请vector时不给大小就不是这样la,看底下

#include
#include
using namespace std;
int main()
{
	vectorlist;
	vector::iterator p;
	list.push_back(1);
	printf("%d", list.size());
	return 0;
}

不给大小或许 才是 vector的精髓罢

 注意大小是101,int也是,而且clear对这种(给定大小的)是有用的,empty取决于size的值 , 上面错了我没看见push——back呜呜呜呜呜呜呜呜,实际大小就是一百

但vectorarr1(100),再push的话是放后面,也算误打误撞了

erase我不会用一用就运行时报错, 会力 原来是erase后 迭代器变成野迭代器了,没法进行++了 erase有返回值的 为下一个

string1:可以看成vector(有对应的函数可以调用)

        2:可以连接两个字符串,且比c的简单

        3:初始化上和c的字符数组差不多

Bjarne在他的The C++ Programming Language里面给出过一个助记的方法:把一个声明从右向左读。

char * const cp; ( * 读成 pointer to ) 
cp is a const pointer to char 

const char * p; 
p is a pointer to const char; 

char const * p; 

同上因为C++里面没有const*的运算符,所以const只能属于前面的类型。

 insert那是o(n)的

vector的size是o(1)的,有专门存的东西

algorithm算法更多是提供了函数和c的头文件有点像

vector没有指针一说,有的只是迭代器

#include
#include
#include
using namespace std;
int arr[] = {5,4,3,2,1};
vectorarr1{ 2,3,1,4,5 };
int main()
{
	sort(arr1.begin(), arr1.end());

	return 0;
}

sort这里结束的是最后一个元素的下一位

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1038613.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号