我试图迭代一对列表的向量,并且我不断收到编译错误。我试图找到该对的第一个元素的匹配。
以下是cpp shell上的代码:http://cpp.sh/4ir4p
这是代码:
// Example program
#include <iostream>
#include <string>
#include <vector>
#include <list>
#include <utility>
using namespace std;
int main()
{
vector < list < pair <string, string> > > v;
v.resize(15);
string k = "foo";
//want to try and find match
for (size_t i = 0; i < v.size(); i++)
if(v[i].first == k)
cout << "true";
for (const auto & itr : v)
if(itr.first == k)
cout << "true";
cout << "YAY";
}
并且我继续收到两种方法的错误,说我没有先命名的成员,我不太确定我做错了什么,谢谢你的帮助。
答案 0 :(得分:1)
当然,您收到了编译错误,std::vector
没有名为first
的成员。当您迭代向量时,迭代器指向对的列表,您想要进行比较。所以你需要第二个循环:
int main()
{
vector < list < pair <string, string> > > v;
v.resize(15);
string k = "foo";
for (const auto &itList : v)
{
for (const auto &itPair : itList)
{
if (itPair.first == k)
{
cout << "true";
}
}
}
}
答案 1 :(得分:1)
你必须为列表引入第二个循环,如:
<select id="id_dystrybutor_glowny">
<option value="1">Dyst1</option>
<option value="2">Dyst2</option>
<option value="3">Dyst3</option>
</select>
<input type="checkbox" class="dystrybutor" value="1"> Dyst1<br/>
<input type="checkbox" class="dystrybutor" value="2"> Dyst2<br/>
<input type="checkbox" class="dystrybutor" value="3"> Dyst3<br/>
<script>
$(document).ready(function () {
$('#id_dystrybutor_glowny').change(function () {
var dID = $(this).find(":selected").val();
if $('.dystrybutor').attr( "value" ) == dID {
$(this).prop('checked', true);
};
});
});
</script>
答案 2 :(得分:0)
在第
行vector < list < pair <string, string> > > v;
您定义了vector<list<pair>>
,因此稍后v[i]
是list
,而不是一对。你不只需要一个vector<pair>
吗?