【MFC】明明引了vector头文件,程序为什么还报错??

更多MFC相关内容正在更新中…
无论你是改 bug 改到抓狂还是更加注重 基础学习 ,都可以持续关注噢!

明人不说暗话,上解决办法!

  1. 加上 using namespace std;
  2. 在每一处vector使用前加上std::
    例如:std::vector< int > set;
  3. 加上using std::vector;

以上三种方式选一种即可,如果你已经考虑了命名空间,却还是报错,那么很遗憾,这篇博客不适合你,可以关闭页面退出啦,再见!

明明引了头文件,程序为什么还报错??

省流: 因为 命名空间 被你忽略啦!

引入

命名空间具体是什么呢?不急,我们先来看一个简单的程序…

#include <iostream>
using namespace std;
int main()
{
	cout<<"Hello World!"<<endl;
	return 0;
}

这个程序想必大家都不陌生,博主当初接触C++写的第一个程序就是这个。

毋庸置疑,这个程序很简单。函数体没什么好说的,就是在屏幕上输出打印一个 “Hello World!”。我们不妨来看一下main函数顶上的这两行,博主在最开始写程序的时候,只是把它当成是写程序的固定格式。不管是什么程序,写上这两行,再写main函数就万事大吉。对于初期简单的程序当然适用,但是这种想法本质上是 非常非常错误的

#include < iostream >
引头文件,主要与输入输出流有关,即cin、cout…
慢慢地,我们会发现只引这个头文件是不够的,还有#include < cmath >、#include < stdlib.h >等等。不过这不是这篇文章的重点,在这里也就一带而过…

命名空间

using namespace std; ——>引入命名空间 std

std(标准命名空间): 在C++中,标准库中的大部分功能都被放置在std命名空间下,比如输出 “Hello World!” 使用的std::cout,cout是C++标准库中std命名空间中的一个对象,std::cout是用于标准输出的流对象,同类型的还有std::cin。而std::vector、std::string等则属于C++标准库中std命名空间中的一个

命名空间的主要作用是避免命名冲突。在C++程序中,如果两个或多个标识符拥有相同的名称,编译器可能无法确定到底使用哪个标识符,从而导致编译错误。这种情况下可以通过在不同的命名空间中定义标识符来避免冲突。

命名空间是一种将相关的标识符分组的机制。通过将标识符放置在命名空间中,我们可以确保一个标识符只能在其所属的命名空间内被访问,而不会与其他命名空间中的标识符产生冲突。这样就可以使程序变得更加可读、可维护和易于扩展。

因此,在使用标识符时,我们需要告诉编译器它所属的命名空间。

程序修改

很显然,下面的这段程序没有指出命名空间…

#include <vector>
int main()
{
	vector<int> set;
	return 0;
}

那么应该如何修改呢?

// 第一种修改方法
#include <vector>
using namespace std;
int main()
{
	vector<int> set;
	return 0;
}
// 第二种修改方法
#include <vector>
int main()
{
	std::vector<int> set;
	return 0;
}
// 第三种修改方法
#include <vector>
using std::vector;
int main()
{
	vector<int> set;
	return 0;
}
  • 第一种方法,直接引入整个命名空间,简单粗暴而且省事,但是存在潜在的冲突和命名空间污染(可能和引入的另一个命名空间存在相同名称的标识符,导致编译器无法识别)。
  • 至于后两种方法,优点就是第一种的缺点,清晰,不容易起冲突打架,但是实在是太麻烦,尤其是代码量大起来、需要使用的类和对象多起来的时候。
  • 优缺点放在这里,大家按需选用!
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值