DateTime.ToString()
这不起作用。因为无法在循环外访问DateTime.ToString(string format)
。
我想到了两种方法来达到我想要的效果。
但我的问题是,还有其他更优雅的方式来实现效果吗?
方式1:
for(int i=0; i<len_arr; i++)
if(arr[i] == some_num){
printf("The idx of %d is: %d\n", some_num, i);
break;
}
if(i == len_arr)
printf("Number not found.\n");
方式2:
i
答案 0 :(得分:9)
如果你不能轻易表达这一点,就不要使用循环。在这个具体案例中,您可以使用专用函数进行搜索。
auto start = arr;
auto end = arr + len;
auto val = std::find(start,end,some_num);
if (val != end)
printf("The idx of %d is: %d\n", some_num, std::distance(start,val));
else
printf("Number not found.\n");
答案 1 :(得分:2)
我发现Luka Rahne的解决方案是最具思想性的。
如果你真的想做循环,你可以这样做:
for(size_t i(0); i <= len_arr; ++i)
{
if(i == len_arr)
{
std::cout << "Number not found." << std::endl;
}
else if(arr[i] == some_num)
{
std::cout << "Found " << some_num << " at index: " << i << std::endl;
break;
}
}
答案 2 :(得分:1)
有很多方法可以实现这一目标。我曾经这样做过:
bool found = false;
for(int i=0; i<len_arr; i++)
{
if(arr[i] == some_num)
{
printf("The idx of %d is: %d\n", some_num, i);
found = true;
break;
}
}
if(!found)
printf("Number not found.\n");
这种变化看起来最清晰/可读。
答案 3 :(得分:1)
如果你不想像Luka建议的那样使用std并且只想做一个简单的循环,你可以像往常一样:
int i;
for(i = 0; i < len_arr && arr[i] != some_num; i++);
if(i < len_arr)
printf("The idx of %d is: %d\n", some_num, i);
else
printf("Number not found.\n");
答案 4 :(得分:0)
我个人不喜欢循环中断,这是我的解决方案:
bool found = false;
for(int i=0; i<len_arr && !found; i++){
if(arr[i] == some_num){
printf("The idx of %d is: %d\n", some_num, i);
found = true;
}
}
if(!found)
printf("Number not found.\n");