北邮考研复试机试的一些笔记

北邮考研复试机试的一些笔记

最近在准备考研复试,复习中遇到的一些小问题记录如下:

1.vector的使用

Vector容器可以以struct为单位存储,使用vector的好处是可以方便地对数组进行处理,例如插入(push_back),删除(erase)等,但是在使用过程中还是出现了一些问题。当需要删除一个vector中符合条件的项时,使用代码如下:

//这是有问题的代码
if(x==bigVal)
{
	complx.erase(complx.begin()+j);
}

这样看起来是没有问题的,但是实际上数组的长度变短了,在执行一次循环后i又自增了一次,例如数组a{1,2,3,4,5,6,7},当a[3]符合删除条件时,将a[3]删除,此时a变为{1,2,3,5,6,7},一轮循环后i变成4,此时a[4]为6,而不是原来数组里的5了。所以会出问题,因此要在删除后再i --。

if(x==bigVal)
{
	complx.erase(complx.begin()+j);
	j--;
}

2.字符串和数组间的转换

在c++中一种方法是使用<sstream>库:

#include<iostream>
#include<sstream>

using namespace std;
int main()
{
	int a = 123345;
	string str;
	stringstream ss;
	ss<<a;
	ss>>str;
	ss.clear();//如果再次使用时需要清除,防止下次调用时造成影响。
}

当然也有其他的办法,想要了解的可以在百度上找找,这里由于时间关系就介绍这一种。

3.设置小数精确度

小数的精确度的设置相对来说比较简单,学过c的都知道,但是c++上的这个知识点由于我太久没用了所以早就还给老师了,今天用到正好记录在这。

#include<iostream>
#include<iomanip>

using namespace std;
int main()
{
	double a = 1.3323;
	cout<<fixed<<setprecision(2)<<a<<endl;//打印的结果位1.33
	//打印的double有2位小数,如果不加上fixed的话是设置4位精度,整数加上小数一共4位
	//,即打印的结果为1.332
}

如果是使用c的话,就更简单了:

#include<iostream>
#include<cstdio>

using namespace std;
int main()
{
	double a = 1.23456;
	printf("%.2f", a);//打印的结果为1.23
}

其他

很久没有用c++了,现在突然拿到手上还觉得很不习惯,例如对于字符串转换成数学表达式这个问题我也遇到过,但是感觉解决起来比较复杂,希望复试不要出这样恶心的题,如果遇到要想其他方法去解决,或者要分割成一个个小部分去计算,但是尽管只有加减乘除,还是要考虑好计算顺序的问题,防止出错,毕竟改bug是一件特别痛苦的事情。其他的以后会继续更新。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值