gpt4 book ai didi

c++ - 如何从不同大小的数组中获取不同的值?

转载 作者:太空宇宙 更新时间:2023-11-04 14:40:19 25 4
gpt4 key购买 nike

问:

arr1[]={1,1,1,2,5,5,6,6,6,6,8,7,9}

和:

values[]={1,2,5,6,7,9}

问:

arr1[]={1,1,1,2,5,5,6,6,6,6,8,7,9,101,1502,1502,1,9}

答案:

values[]={1,2,5,6,7,9,101,1502}

这是我试过但没有用的

   for(int i=0;i<(index-1);i++) { 
if(data[i].age != data[i+1].age) {
c=new list;
c->value=data[i].age;
c->next=NULL; clas++;
if(age_head==NULL) {
p=c; age_head=c;
}
for(c=age_head;c!=NULL,c->next!=NULL;p=c,c=c->next) {
if(data[i].age!=c->value)
found=false;
else
found=true;
}
if((age_head!=NULL)&& (found=false)) {
p->next=c; c->next=NULL;
}
}
}

最佳答案

这不是最有效的,但它有一些值(value):

  1. 它使用STL对象
  2. 它使用一个很酷的鲜为人知的模板技巧来在编译时知道类 C 数组的大小

...

int a[] = {1,1,1,2,5,5,6,6,6,6,8,7,9} ;
int b[] = {1,1,1,2,5,5,6,6,6,6,8,7,9,101,1502,1502,1,9} ;

// function setting the set values
template<size_t size>
void findDistinctValues(std::set<int> & p_values, int (&p_array)[size])
{
// Code modified after Jacob's excellent comment
p_values.clear() ;
p_values.insert(p_array, p_array + size) ;

}

void foo()
{
std::set<int> values ;

findDistinctValues(values, a) ;
// values now contain {1, 2, 5, 6, 7, 8, 9}

findDistinctValues(values, b) ;
// values now contain {1, 2, 5, 6, 7, 8, 9, 101, 1502}
}

另一个版本可以返回集合,而不是引用它。那么它将是:

int a[] = {1,1,1,2,5,5,6,6,6,6,8,7,9} ;
int b[] = {1,1,1,2,5,5,6,6,6,6,8,7,9,101,1502,1502,1,9} ;

// function returning the set
template<size_t size>
std::set<int> findDistinctValues(int (&p_array)[size])
{
// Code modified after Jacob's excellent comment
return std::set<int>(p_array, p_array + size) ;
}

void foo()
{
std::set<int> valuesOne = findDistinctValues(a) ;
// valuesOne now contain {1, 2, 5, 6, 7, 8, 9}

std::set<int> valuesTwo = findDistinctValues(b) ;
// valuesTwo now contain {1, 2, 5, 6, 7, 8, 9, 101, 1502}
}

关于c++ - 如何从不同大小的数组中获取不同的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3616205/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com