C++ 比较多字节值

C++ 比较多字节值,c++,comparison,C++,Comparison,我正在编写一个在线游戏,所以我对多重比较有点困惑,我需要让它成为最好的方式,这就是为什么我在这里提问 这是我的密码: bool CHARACTER::UseItemNewAttribute(TItemPos source_pos, TItemPos target_pos, BYTE bType0, BYTE bType1, BYTE bType2, BYTE bType3) { LPITEM item; LPITEM item_target; if (!IsValidI

我正在编写一个在线游戏,所以我对多重比较有点困惑,我需要让它成为最好的方式,这就是为什么我在这里提问

这是我的密码:

bool CHARACTER::UseItemNewAttribute(TItemPos source_pos, TItemPos target_pos, BYTE bType0, BYTE bType1, BYTE bType2, BYTE bType3)
{
    LPITEM item;
    LPITEM item_target;

    if (!IsValidItemPosition(source_pos) || !(item = GetItem(source_pos)))
        return false;

    if (!IsValidItemPosition(target_pos) || !(item_target = GetItem(target_pos)))
        return false;

    if (bType0 <= 0 || bType0 > 255)
        return false;

    if (bType1 <= 0 || bType1 > 255)
        return false;

    if (bType2 <= 0 || bType2 > 255)
        return false;

    if (bType3 <= 0 || bType3 > 255)
        return false;

    if (!item_target->AddNewStyleAttribute(bType0, bType1, bType2, bType3))
        return false;
...
bool CHARACTER::UseItemNewAttribute(TItemPos源位置、TItemPos目标位置、字节bType0、字节bType1、字节bType2、字节bType3)
{
项目;
LPU项目目标;
如果(!isValidItem(源位置)| |!(项=获取项(源位置)))
返回false;
如果(!isValidItem(target_pos)| |!(item_target=GetItem(target_pos)))
返回false;
如果(bType0 255)
返回false;
如果(bType1 255)
返回false;
如果(b类型2 255)
返回false;
如果(bType3 255)
返回false;
如果(!item\u target->AddNewStyleAttribute(bType0、bType1、bType2、bType3))
返回false;
...
首先是:在这里,我可以检查字节(0,255)值,但这些看起来像是垃圾代码。正如我所知…做这件事的最佳方式是什么?(我想让它从最佳方式保持最佳性能。)


第二个是:我需要对每个值进行比较,[!type0==type1],!type0==type2]……就像这样。在这种情况下,每个值都应该是一个。最好的方法是什么?

好的,几个小时后我找到了一个很好的方法。std::unique和std::resize工作得很好

以下是一个例子:

std::vector<BYTE> vec_bTypes;

vec_bTypes.push_back(11);
vec_bTypes.push_back(11); // duplicate!!!
vec_bTypes.push_back(12);
vec_bTypes.push_back(13);

std::vector<BYTE>::iterator it;

it = std::unique (vec_bTypes.begin(), vec_bTypes.end());
vec_bTypes.resize( std::distance(vec_bTypes.begin(), it) );

// output will be 11 12 13...
std::向量向量类型;
向量类型。推回(11);
vec_b类型。向后推(11);//重复!!!
向量类型。推回(12);
向量类型。推回(13);
std::vector::it迭代器;
it=std::unique(vec_bTypes.begin(),vec_bTypes.end());
调整大小(标准::距离(vec_bTypes.begin(),it));
//输出将是11 12 13。。。

没有答案,很有趣……字节不是无符号字符吗?如果是,就不需要检查255,但我如何检查其他字节值是否相同?有一种很糟糕的方法,但我不想这样做。我需要一种正确的方法..使用std:valarray,你可以用matlab风格来做。
(byteArray1==byteArray2)。sum()>0
,我认为这也不算太糟糕。嗯,无论如何,谢谢,我在等待另一个答案。。。。