小编Dek*_*rer的帖子

如何将矢量与数组进行比较?

我想比较矢量和数组.向量和数组中的元素顺序不同,未排序且可以重复.例如

以下是相同的:

vector<int> lvector = {5,7,3,1,2,7};
int larray[6] = {3,5,1,7,2,7}
Run Code Online (Sandbox Code Playgroud)

下面,不一样:

vector<int> lvector = {5,7,3,1,2,7,5};
int larray[7] = {3,5,1,7,2,7,3}
Run Code Online (Sandbox Code Playgroud)

这样的事情也不一样:

vector<int> lvector = {1,1,1,1,2,2};
int larray[6] = {1,1,1,1,1,2}
Run Code Online (Sandbox Code Playgroud)

现在我需要检查矢量和数组是否具有相同的元素.我无法修改向量和数组,但我可以创建一个新容器并将元素从向量和数组复制到这个新容器,然后复制它们.我问这个,因为我想以有效的方式做到这一点.谢谢.

c++ arrays containers compare vector

9
推荐指数
1
解决办法
3114
查看次数

如何在cpp中有效地比较向量与数组?

我想以更好(更快)的方式编写代码.我有一个容器向量和一个简单的数组.我想比较矢量的内容和数组的内容.假设我有这样的类:

struct A
{
    float aa;
    struct(float p_aa) : aa(p_aa) {}
};

struct B : public A
{
    A bb;
    struct(float p_aa) : A(p_aa) {}
};
Run Code Online (Sandbox Code Playgroud)

我还有一个容器和一个简单的数组:

std::vector<B> l_v = {B(1), B(3)};
B l_b[2] = {B(1), B(3)};
Run Code Online (Sandbox Code Playgroud)

将容器与数组进行比较的函数是:

bool isTheSame(const std::vector<B> &l_v, B *l_b)
{
    unsigned int count = 0;
    for(auto it = l_v.begin(); it!= l_v.end(); ++it)
    {
        if(l_b[count].aa != it->aa)
        {
            return false;
        }
        ++count;
    }
    return true;
}
Run Code Online (Sandbox Code Playgroud)

我想用lambda或foreach更好地编写它.你有什么想法?谢谢.

c++ arrays foreach lambda vector

2
推荐指数
1
解决办法
620
查看次数

如何改进代码并减少代码数量?

该代码完全相同,所以我想以简单的方式重构它以减少行数.有一点不同的是最小/最大功能执行.是否可以在python中使用函数指针调用min/max作为指向函数的指针,就像在C中一样?

def calculate_min(a, b, c, d, e, f):
    try:
        v = a[e][f]
        b[d] = v if np.isnan(b[d]) else min(b[d], v)    #min()
    except KeyError as exc:
        logger.error("keyerror")

def calculate_max(a, b, c, d, e, f):
    try:
        v = a[e][f]
        b[d] = v if np.isnan(b[d]) else max(b[d], v)    #max()
    except KeyError as exc:
        logger.error("keyerror")
Run Code Online (Sandbox Code Playgroud)

python refactoring pointers coding-style

2
推荐指数
1
解决办法
117
查看次数