我想比较矢量和数组.向量和数组中的元素顺序不同,未排序且可以重复.例如
以下是相同的:
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)
现在我需要检查矢量和数组是否具有相同的元素.我无法修改向量和数组,但我可以创建一个新容器并将元素从向量和数组复制到这个新容器,然后复制它们.我问这个,因为我想以有效的方式做到这一点.谢谢.
我想以更好(更快)的方式编写代码.我有一个容器向量和一个简单的数组.我想比较矢量的内容和数组的内容.假设我有这样的类:
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更好地编写它.你有什么想法?谢谢.
该代码完全相同,所以我想以简单的方式重构它以减少行数.有一点不同的是最小/最大功能执行.是否可以在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) arrays ×2
c++ ×2
vector ×2
coding-style ×1
compare ×1
containers ×1
foreach ×1
lambda ×1
pointers ×1
python ×1
refactoring ×1