VC6.0容器的迭代器初始化存在问题
使用C c(b,e) 创建c,其元素是迭代器b和e标识的范围的元素副本。 适用于所有容器
描述:
void f()
{
vector<int> m_vector;
list<int> m_list;
for(int i=0; i<10; i++)
{
m_vector.push_back(i);
m_list.push_back(i);
}
vector<int> m_TempVector(m_list.begin(), m_list.end());
cout<<"比较大小:"<<endl;
if(m_TempVector == m_vector)
cout<<"list与vector大小相等。"<<endl;
else
cout<<"不等"<<endl;
return;
}
这段代码在VC6.0下,会报如下错误:
error C2664: '__thiscall std::vector<int,class std::allocator<int> >::std::vector<int,class std::allocator<int> >(unsigned int,const int &,const class std::allocator<int> &)' : cannot convert parameter 1 from 'class std::list<int,class std::allocator<int> >::iterator' to 'unsigned int' (指向上面红色语句)
在VS2010下,不会报错。
问题:
1、这段代码符合容器的初始化规则,为什么VC6.0下回报错?是否是VC6.0的编译器不支持容器的这种初始化方式?
2、如果要在VC6.0下执行这段代码,应该怎么做?
描述:
void f()
{
vector<int> m_vector;
list<int> m_list;
for(int i=0; i<10; i++)
{
m_vector.push_back(i);
m_list.push_back(i);
}
vector<int> m_TempVector(m_list.begin(), m_list.end());
cout<<"比较大小:"<<endl;
if(m_TempVector == m_vector)
cout<<"list与vector大小相等。"<<endl;
else
cout<<"不等"<<endl;
return;
}
这段代码在VC6.0下,会报如下错误:
error C2664: '__thiscall std::vector<int,class std::allocator<int> >::std::vector<int,class std::allocator<int> >(unsigned int,const int &,const class std::allocator<int> &)' : cannot convert parameter 1 from 'class std::list<int,class std::allocator<int> >::iterator' to 'unsigned int' (指向上面红色语句)
在VS2010下,不会报错。
问题:
1、这段代码符合容器的初始化规则,为什么VC6.0下回报错?是否是VC6.0的编译器不支持容器的这种初始化方式?
2、如果要在VC6.0下执行这段代码,应该怎么做?
...全文
相关推荐
stl容器map的使用
VC6.0环境下的注意事项虽然VC6.0是一个较老的编译器,但仍然支持STL。
STL容器multimap的使用
**VC6.0兼容性**: 虽然`multimap`是C++标准库的一部分,但在较老的编译器如VC6.0中,可能需要包含`<map>`头文件才能使用,并且其性能和功能可能不如现代编译器中的实现。9.
C语言n后问题代码 算法设计与分析
VC6.0是一款较老的开发环境,对于C++标准库的支持有限,因此在编写代码时,我们可能会避免使用C++的一些高级特性,如STL容器和迭代器,转而使用传统的数组和指针操作。
vc6.0 stl pack
兼容性:确保补丁与你的VC6.0版本兼容,以免引入新的问题。2. 头文件和库链接:正确包含STL的头文件,并在编译设置中链接对应的库文件。3.
VC 6.0 英文版
**C++编译器**: 支持传统的C++语法,同时也引入了对C++标准模板库(STL)的支持,使得程序员可以方便地使用容器、算法和迭代器等现代C++特性。4.


