Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C+中的错误结果输出+;,当我添加语句时_C++_Cout_Endl - Fatal编程技术网

C++ C+中的错误结果输出+;,当我添加语句时

C++ C+中的错误结果输出+;,当我添加语句时,c++,cout,endl,C++,Cout,Endl,我试图在数组(大小为n)中找到最小值和最大值,使用3*(n//2)在一次遍历中进行比较。这是我的代码: #include <iostream> #include <initializer_list> //! //! @Brief:get the minmum and maxmum in 3 * ( n // 2) times comparison. //! Create by Soyn. 31/7/15. //! bool IsOdd( size_t n)

我试图在数组(大小为n)中找到最小值和最大值,使用
3*(n//2)
在一次遍历中进行比较。这是我的代码:

#include <iostream>
#include <initializer_list>
//!
//! @Brief:get the minmum and maxmum in 3 * ( n // 2) times comparison.
//! Create by Soyn. 31/7/15.
//!

    bool IsOdd( size_t n)
    {
        return n % 2 ;
    }
    std::initializer_list<int> getLargerAndSmaller( int a, int b)
    {
        if(a <= b){
            return {a,b};
        }else{
            return {b,a};
        }
    }

    int main(void)
    {
        int  Min, Max;
        int a[] = {5,4,1,7,3,8,3,4,9,10};
        int n = sizeof(a) / sizeof(a[0]);
        for( int i = 0; i < n - 1; i += 2){
            if( (i ==0) &&IsOdd(n)){           // initialize the Min and Max.
                Min = Max = a[i];
            } else{
                    auto item = getLargerAndSmaller(a[i],a[i+1]);
                    if(i == 0){
                            Min = *(item.begin());
                            Max = *(item.begin() + 1);
                            std :: cout << "Min: " << Min << " , " << "Max: " << Max << std :: endl;
                        }else{
                        std :: cout << *(item.begin()) << " , " << *( item.begin() + 1) << std :: endl;
                        Min > *(item.begin()) ? Min = *(item.begin()) : Min;
                        Max < *(item.begin() + 1) ? Max = *(item.begin() + 1) : Max;
                        std :: cout << "Min: " << Min << " , " << "Max: " << Max << std :: endl;
                        }
            }
        }
         return 0;
    }
#包括
#包括
//!
//! @简介:在3*(n//2)次比较中获得最小值和最大值。
//! 由Soyn创建。31/7/15.
//!
bool IsOdd(尺寸)
{
返回n%2;
}
std::初始值设定项列表getLargerandSmall(int a,int b)
{

if(a函数返回
std::initializer\u list
几乎是不正确的,因为它们引用本地数组

当您编写
时,返回{a,b};
,或等效地用于说明:

std::initializer_list<int> x = { a, b };
return x;
std::初始值设定项_list x={a,b};
返回x;
发生的情况是,创建了一个由2个元素组成的自动(堆栈)数组,其中包含
a
b
的副本;
初始值设定项列表
对象包含对该本地数组的引用

因此,当您访问
项时,您正在访问一个悬空引用(未定义的行为)


initializer\u list
不是设计用来作为容器的-而是使用
array
vector
pair
等。

但是当我看到*(item.begin())和*(item.brgin()+1)时,它是一个正确的值。它只是不能输入这个语句`Min>*(item.begin())?Min=*(item.begin()):Min;Max<*(item.begin()+1)?Max=*(item.begin()+1)Max;`@WangYao表示任何事情都可能发生。包括您看到的内容和其他所有内容。可能对
的调用