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

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

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

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
#include

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

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

3.设置小数精确度

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

#include
#include

using namespace std;
int main()
{
	double a = 1.3323;
	cout<

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

#include
#include

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

其他

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

你可能感兴趣的:(c++初级)