linux下的g++编译c++问题,请高手解决

时间:2020-12-30 01:47:22
#include<iostream>
#include<vector>
using std::cout;
using std::endl;
using std::vector;
using std::vector<int>::iterator;

int main()
{
vector<int> container;
for(int i=1;i<=4;i++)
container.push_back(i);
cout<<"here is what is in the container:\n";
iterator p;
for(p=container.begin();p!=container.end();p++)
cout<<*p<<" ";
cout<<endl;

cout<<"setting entries to 0:\n";
for(p=container.begin();p!=container.end();p++)
*p=0;

cout<<"contanier now contains:\n";
for(p=container.begin();p!=container.end();p++)
cout<<*p<<" ";
cout<<endl;
return 0;
}
此代码在linux下编译不成功,但是用vc++却可以编译通过。
在linux下编译时总是出现
error:'std::vector<int ,std::allocator<int> >'is not a namespace 

7 个解决方案

#1


注意第6行和第十四行:
<code>
1 #include<iostream>
2 #include<vector>
3 using std::cout;
4 using std::endl;
5 using std::vector;
6 //using std::vector<int>::iterator;

8 int main()
9 {
10 vector<int> container;
11 for(int i=1;i<=4;i++)
12 container.push_back(i);
13 cout<<"here is what is in the container:\n";
14 std::vector<int>::iterator p;
15 for(p=container.begin();p!=container.end();p++)
16 cout<<*p<<" ";
17 cout<<endl;
18 
19 cout<<"setting entries to 0:\n";
20 for(p=container.begin();p!=container.end();p++)
21 *p=0;
22 
23 cout<<"contanier now contains:\n";
24 for(p=container.begin();p!=container.end();p++)
25 cout<<*p<<" ";
26 cout<<endl;
27 return 0;
28 }
</code>

#2


结果是:
here is what is in the container:
1 2 3 4 
setting entries to 0:
contanier now contains:
0 0 0 0 

#3


#include<iostream>
#include<vector>
using std::cout;
using std::endl;
using std::vector;

int main()
{
vector<int> container;
for(int i=1;i<=4;i++)
container.push_back(i);
cout<<"here is what is in the container:\n";
vector<int>::iterator p;
for(p=container.begin();p!=container.end();p++)
cout<<*p<<" ";
cout<<endl;

cout<<"setting entries to 0:\n";
for(p=container.begin();p!=container.end();p++)
*p=0;

cout<<"contanier now contains:\n";
for(p=container.begin();p!=container.end();p++)
cout<<*p<<" ";
cout<<endl;
return 0;
}


接分。

#4


各位好心人,很感谢大家给我的建议,但是我不想修改源代码,又想让它能在Linux下执行,所以这样的话应该怎样改进呢?

#5


C++跨平台,谢谢。

是你代码写错了,谢谢。

#6


楼上的这位朋友,我的这代码在vc++里能顺利编译通过并成功执行,但可能由于编译器的缘故在Linux里不能实现,可能需要更改下头文件之类的操作,所以我想问下有什么具体办法.

#7


引用 6 楼 xbmoxia 的回复:
楼上的这位朋友,我的这代码在vc++里能顺利编译通过并成功执行,但可能由于编译器的缘故在Linux里不能实现,可能需要更改下头文件之类的操作,所以我想问下有什么具体办法.


在vc++里能通过编译并成功执行,请问你的vc++版本是多少?vc6并不是按照标准来的,在vc以后的标准里改了不少东西,所以你应该尽量正确的写法来做,不要钻牛角了!与所谓的头文件根本无关噢!


#include<iostream>
#include<vector>
using std::cout;
using std::endl;
using std::vector;
//using std::vector<int>::iterator; // std::vector<int>::iterator不是一个命名空间,所以不能用using

int main()
{
vector<int> container;
for(int i=1;i<=4;i++)
container.push_back(i);
cout<<"here is what is in the container:\n";
vector<int>::iterator p; // vector<int>:: 是一个域作用符
for(p=container.begin();p!=container.end();p++)
cout<<*p<<" ";
cout<<endl;

cout<<"setting entries to 0:\n";
for(p=container.begin();p!=container.end();p++)
*p=0;

cout<<"contanier now contains:\n";
for(p=container.begin();p!=container.end();p++)
cout<<*p<<" ";
cout<<endl;
return 0;
}


运行结果:
[zcm@t #36]$./a
here is what is in the container:
1 2 3 4 
setting entries to 0:
contanier now contains:
0 0 0 0 

#1


注意第6行和第十四行:
<code>
1 #include<iostream>
2 #include<vector>
3 using std::cout;
4 using std::endl;
5 using std::vector;
6 //using std::vector<int>::iterator;

8 int main()
9 {
10 vector<int> container;
11 for(int i=1;i<=4;i++)
12 container.push_back(i);
13 cout<<"here is what is in the container:\n";
14 std::vector<int>::iterator p;
15 for(p=container.begin();p!=container.end();p++)
16 cout<<*p<<" ";
17 cout<<endl;
18 
19 cout<<"setting entries to 0:\n";
20 for(p=container.begin();p!=container.end();p++)
21 *p=0;
22 
23 cout<<"contanier now contains:\n";
24 for(p=container.begin();p!=container.end();p++)
25 cout<<*p<<" ";
26 cout<<endl;
27 return 0;
28 }
</code>

#2


结果是:
here is what is in the container:
1 2 3 4 
setting entries to 0:
contanier now contains:
0 0 0 0 

#3


#include<iostream>
#include<vector>
using std::cout;
using std::endl;
using std::vector;

int main()
{
vector<int> container;
for(int i=1;i<=4;i++)
container.push_back(i);
cout<<"here is what is in the container:\n";
vector<int>::iterator p;
for(p=container.begin();p!=container.end();p++)
cout<<*p<<" ";
cout<<endl;

cout<<"setting entries to 0:\n";
for(p=container.begin();p!=container.end();p++)
*p=0;

cout<<"contanier now contains:\n";
for(p=container.begin();p!=container.end();p++)
cout<<*p<<" ";
cout<<endl;
return 0;
}


接分。

#4


各位好心人,很感谢大家给我的建议,但是我不想修改源代码,又想让它能在Linux下执行,所以这样的话应该怎样改进呢?

#5


C++跨平台,谢谢。

是你代码写错了,谢谢。

#6


楼上的这位朋友,我的这代码在vc++里能顺利编译通过并成功执行,但可能由于编译器的缘故在Linux里不能实现,可能需要更改下头文件之类的操作,所以我想问下有什么具体办法.

#7


引用 6 楼 xbmoxia 的回复:
楼上的这位朋友,我的这代码在vc++里能顺利编译通过并成功执行,但可能由于编译器的缘故在Linux里不能实现,可能需要更改下头文件之类的操作,所以我想问下有什么具体办法.


在vc++里能通过编译并成功执行,请问你的vc++版本是多少?vc6并不是按照标准来的,在vc以后的标准里改了不少东西,所以你应该尽量正确的写法来做,不要钻牛角了!与所谓的头文件根本无关噢!


#include<iostream>
#include<vector>
using std::cout;
using std::endl;
using std::vector;
//using std::vector<int>::iterator; // std::vector<int>::iterator不是一个命名空间,所以不能用using

int main()
{
vector<int> container;
for(int i=1;i<=4;i++)
container.push_back(i);
cout<<"here is what is in the container:\n";
vector<int>::iterator p; // vector<int>:: 是一个域作用符
for(p=container.begin();p!=container.end();p++)
cout<<*p<<" ";
cout<<endl;

cout<<"setting entries to 0:\n";
for(p=container.begin();p!=container.end();p++)
*p=0;

cout<<"contanier now contains:\n";
for(p=container.begin();p!=container.end();p++)
cout<<*p<<" ";
cout<<endl;
return 0;
}


运行结果:
[zcm@t #36]$./a
here is what is in the container:
1 2 3 4 
setting entries to 0:
contanier now contains:
0 0 0 0