Tengo un vector que estoy tratando de realizar contiene una función. Recibo algún tipo de error de lanzamiento y no puedo armar una solución. También quiero saber si lo que estoy haciendo es la forma adecuada de verificar si un vector contiene un valor.¿Cómo puedo verificar si un valor está contenido en un vector? C++
Aquí está el código:
#include "stdafx.h"
#include <vector>
static void someFunc(double** Y, int length);
static bool contains(double value, std::vector<double> vec);
int main()
{
double doubleArray[] = { 1, 2, 3, 4, 5 };
double *pDoubleArray = doubleArray;
int size = sizeof doubleArray/sizeof doubleArray[0];
someFunc(&pDoubleArray, size);
return 0;
}
static void someFunc(double** Y, int length)
{
std::vector<double> vec();
for(int i = 0; i < 10; i++)
{
//error: 'contains' : cannot convert parameter 2 from 'std::vector<_Ty> (__cdecl *)(void)' to 'std::vector<_Ty>'
if(contains(*(Y[i]), vec))
{
//do something
}
}
}
static bool contains(double value, std::vector<double> vec)
{
for(int i = 0; i < vec.size(); i++)
{
if(vec[i] == value)
{
return true;
}
}
return false;
}
+1 para respuestas bien formadas! Gran trabajo. –
¡Impresionante, funciona genial! ¡Gracias a otros también que tuvieron respuestas superpuestas! –
FYI, std :: find devuelve el último elemento si no se encuentra la coincidencia, por lo que '! = Vec.end()' está allí – xinthose