使用一个 for 循环如何迭代和测试迭代器值?
Using one for loop how to iterate and test the iterator values?
在这里我只需要使用一个for循环(并且内部没有if条件(来使用谷歌测试测试迭代器值,下面是我的代码
TEST(EVTValSortedVector, StdIterator)
{
int arr[3], i;
int data = 4;
arr[0] = int(2);
arr[1] = int(1);
arr[2] = int(3);
EVTValSortedVector<int> eTerriers;
EXPECT_EQ(eTerriers.isEmpty(), true);
for (i = 0; i < 3; i++)
{
eTerriers.insert(arr[i]);
}
EXPECT_EQ(eTerriers.isEmpty(), false);
EVTValSortedVector<int>::iterator j = eTerriers.begin();
EVTValSortedVector<int>::iterator k = eTerriers.begin();
++k;
for (int i = 0; i < data - 1; i++, j++, ++k)
{
EXPECT_LE((*j), (*k));
cout << "j and k value" << *j << *k << endl;
}
}
实际输出:
JK
1 2 2 3 3
2但是我需要这样的输出:
J K
1 1 1 2 1
3 2
2 2 3 3 3
如果我得到这个需要的输出(上面(,那么只有我的测试用例会被通过。
请帮助我解决这个问题,我的要求是只使用一个 for 循环,并且在循环内也没有条件检查(没有 if 条件(。
请帮忙。
你不应该在一个1循环中执行此操作。
for (auto i = eTerriers.begin(); i != eTerriers.end(); ++i)
{
for (auto j = i; j != eTerriers.end(); ++j)
{
EXPECT_LE((*i), (*j));
std::cout << "i and j value " << *i << *j << std::endl;
}
}
1:我在其迭代器参数中包含至少是线性<algorithm>
的任何内容作为循环,用于计数循环
如果你的循环计数不太严格,你可以
#include <algorithm>
for (auto i = eTerriers.begin(); i != eTerriers.end(); ++i)
{
std::for_each(i, eTerriers.end(), [i](auto & val)
{
EXPECT_LE((*i), (val));
std::cout << "i and j value " << *i << val << std::endl;
});
}
有一种方法,但它涉及循环中的if
,而且很可怕。
constexpr std::size_t data = 3;
for (std::size_t i = 0; i < (data * data); ++i)
{
if ((i % data) <= (i / data))
{
EVTValSortedVector<int>::iterator j = eTerriers.begin() + (i % data);
EVTValSortedVector<int>::iterator k = eTerriers.begin() + (i / data);
EXPECT_LE((*j), (*k));
cout << "j and k value" << *j << *k << endl;
}
}
重新思考您的要求。
相关文章:
- 使用std::multimap迭代器创建std::list
- 来自 std::list 的迭代器 .end() 按预期返回"0xcdcdcdcdcdcdcdcd"但 .begin()
- C++中带有List类的迭代器Segfault
- 迭代时从向量和内存中删除对象
- 如何在c++迭代器类型中包装std::chrono
- 带过滤器的现代迭代c++集合
- 使用一个 for 循环如何迭代和测试迭代器值?
- 测试迭代器是否位于列表中的最后一个
- 如何将迭代器(包括结束和开始之前的迭代器)测试到列表或forward_list保持有效
- 为什么每次迭代都由 i+6 完成,为什么这个素数测试函数的条件是 i*i<=n?
- 如何在VS2013上比较两个迭代器进行单元测试
- 单元测试时操作迭代器
- 测试两个迭代器是否来自同一对象
- 一些测试用于查看为使用指针的迭代和使用索引的迭代生成的代码是否不同
- 测试一个简单的链表,但它坚持向后迭代
- 使用模拟测试迭代代码——它有意义吗?
- 对于循环数组迭代,if循环测试索引是否为真/假,计算结果不正确
- vector迭代器——测试end
- 测试c++迭代器
- 我可以测试wstring::迭代器是否与非特定的::end相等吗?