簡體   English   中英

std :: bitset的數組作為返回值

[英]array of std::bitset as a return value

我需要編寫一個函數來在兩個std :: bitset上執行N個不同的布爾運算符,每個運行程序中的std :: bitset可以具有不同的大小。 所以我試圖編寫一個函數來執行內部操作並返回位集數組,但是我不知道如何定義返回值?

template<size_t SIZE>
    ....  bitwiseOperator(bitset<SIZE> r_1, bitset<SIZE> r_2, vector<int> fun)
    {
      int  k = 0;
      bitset<SIZE> r_12;
      const int N =   fun.size();
      bitset<SIZE> rs[N];
      for(vector<int>::iterator it = fun.begin(); it != fun.end(); ++it) 
      {
        if (*it == 1)         
        {
                r_12 = r_1 & r_2;
        }
        else if(*it == 2)  
        {
                r_12 = r_1 | r_2;
        }
        else if(*it == 3) 
        {
                r_12 = r_1 ^ r_2;
        }
        rs[k] = r_12;
        k++;
     }
        return rs;
    }

我需要返回值類似於bitset [N]

您想返回可變大小的數組的事實建議使用std::vector

所以我可能會這樣做:

template<size_t SIZE>
std::vector<std::bitset<SIZE> > bitwiseOperator(bitset<SIZE> r_1,
    bitset<SIZE> r_2, vector<int> fun)
{
    int k = 0;
    bitset<SIZE> r_12;

    const int N = fun.size(); // not sizeof(fun); !!!

    std::vector<std::bitset<SIZE> > rs(N); // Variable size suggests std::vector

    for(vector<int>::iterator it = fun.begin(); it != fun.end(); ++it)
    {
        if(*it == 1)
        {
            r_12 = r_1 & r_2;
        }
        else if(*it == 2)
        {
            r_12 = r_1 | r_2;
        }
        else if(*it == 3)
        {
            r_12 = r_1 ^ r_2;
        }
        rs[k] = r_12;
        k++;
    }
    return rs;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM