同时访问两个列表的成员时出错? 我在C++(VisualStudio)中同时迭代两个列表时,面临一些未知的错误。两个列表的长度相同
我正在遵循()中提到的程序。不知道我在哪里犯了错误。有人能帮我解决这个错误吗 具有for循环的函数同时访问两个列表的成员时出错? 我在C++(VisualStudio)中同时迭代两个列表时,面临一些未知的错误。两个列表的长度相同,c++,list,visual-c++,stl,iterator,C++,List,Visual C++,Stl,Iterator,我正在遵循()中提到的程序。不知道我在哪里犯了错误。有人能帮我解决这个错误吗 具有for循环的函数 int Two_Lists_ForLoop(std::initializer_list<dmat> list1, std::initializer_list<string> list2) { std::list<dmat>::iterator it1 = list1.begin(); std::list<string>::iterat
int Two_Lists_ForLoop(std::initializer_list<dmat> list1, std::initializer_list<string> list2)
{
std::list<dmat>::iterator it1 = list1.begin();
std::list<string>::iterator it2 = list2.begin();
for (; it1 != list1.end() && it2 != list2.end(); ++it1, ++it2){
//run some code
cout << *it1 << endl;
cout << *it2 << endl;
}
return 0;
}
int-Two-Lists\u-ForLoop(std::initializer\u-list1,std::initializer\u-list2)
{
std::list::iterator it1=list1.begin();
std::list::iterator it2=list2.begin();
对于(;it1!=list1.end()&&it2!=list2.end();++it1,++it2){
//运行一些代码
Visual Studio是否有一个选项卡,您可以在其中以文本形式获取错误。请复制并粘贴文本,完整无误。请在代码中标出行(带注释)错误所在的位置。最好创建一个向我们展示的类型,一个复制问题的类型,我们可以亲自尝试并查看错误。不过,作为提示:std::initialize\u list
不是一个std::list
,这两种类型是不兼容的,它们的迭代器也是不兼容的。您应该选择std::list::iterator
sestd::initializer\u list::iterator
(因为容器是initializer\u list
,而不是列表
)。或者简单地使用auto
关键字。@Someprogrammerdude非常感谢,问题解决了。我将std::list
替换为std::initialize_list
@the_Learnerauto it1=list1.begin();
和auto it2=list2.begin();
Visual Studio有一个选项卡,您可以在其中以文本形式获取错误。请复制粘贴文本,完整完整。请在代码中标出行(带注释)错误所在的位置。最好创建一个向我们展示的类型,一个复制问题的类型,我们可以亲自尝试并查看错误。不过,作为提示:std::initialize\u list
不是一个std::list
,这两种类型是不兼容的,它们的迭代器也是不兼容的。您应该选择std::list::iterator
sestd::initializer\u list::iterator
(因为容器是initializer\u list
,而不是列表
)。或者简单地使用auto
关键字。@Someprogrammerdude非常感谢,问题解决了。我将std::list
替换为std::initialize_list
@the_Learnerauto it1=list1.begin();
和auto it2=list2.begin();
int Two_Lists_WhileLoop(std::initializer_list<dvec> list1, std::initializer_list<string> list2)
{
std::list<dvec>::iterator it1 = list1.begin();
std::list<string>::iterator it2 = list2.begin();
while (it1 != list1.end() && it2 != list2.end()) {
//run some code
cout << *it1 << endl;
cout << *it2 << endl;
it1++;
it2++;
}
return 0;
}