Nie da. Zrób tak jak napisales, albo użyj coś z STLa. Ps. Zdefiniowanej, a nie zadeklarowanej.
Edit: Ta tymczasowa tablica może byc docelową. Ale i tak polecam bardziej STLa.
Wersja do druku
ten kod znajduje wszystkie te same rekordy na dwoch listach, a jak zaimplementować listę, ktora sklada sie tylko z tych roznych elementów? (newPatients)Kod:var equalsPatients = onlinePatients.FindAll(x => localPatients.Exists(y => y.PatientGuid == x.PatientGuid));
Czytaj te które mają rózne Guidy?
?Kod:var newPatients = onlinePatients.FindAll(x => localPatients.Exists(y => y.PatientGuid != x.PatientGuid));
probowalem, zwraca zawsze true bo zawsze ktorys element na liscie drugiej ma inne Guid od porównywającego.
Rozwiązałem to tak:
troche brzydkie ale dziala ;sssKod:foreach (var item in localPatients)
{
if(onlinePatients.Exists(x => x.PatientGuid==item.PatientGuid))
equallyPatients.Add(item);
else
newPatients.Add(item);
}
Alex, da sie byc podłączonym do 2 API jednoczesnie?
Jak w c++ zmniejszyć rozmiar dwuwymiarowej tablicy dynamicznej z np 5x5 do 1x1?
Generalnie to się nie da, musisz zrobić nową, albo olać fakt że jest 5x5 i używać jak mniejszej.
Jak Ci bardzo zależy to możesz tym sie pobawić, ale musisz wywołać oddzielnie na każdym wierszu, potem na samej tablicy, no i działa tylko jak była robiona przez malloc, a nie new.
A dobrać się do adresu po malloc/calloc w cpp NIE DA afaik, i TRZEBA używać new
chyba, że ktoś mi wyjaśni, jak to zrobić dostając w twarz voidem jako zwrotką z malloca
@Rzulf
Napisałem Ci na szybko takie coś.
@zakiusKod:template<class T>
void copy2dArray(T** target, T** source, int xDim, int yDim)
{
for (int x = 0; x < xDim; x++)
{
for (int y = 0; y < yDim; y++)
target[x][y] = source[x][y];
}
}
int main()
{
int sizeX = 5;
int sizeY = 5;
int** ary = new int*[sizeX];
for(int i = 0; i < sizeX; ++i)
ary[i] = new int[sizeY];
for (int x = 0; x < sizeX; x++)
{
for (int y = 0; y < sizeY; y++)
ary[x][y] = 66;
}
int** ary2 = new int*[1];
for(int i = 0; i < 1; ++i)
ary2[i] = new int[1];
copy2dArray(ary2, ary, 1, 1);
//TODO: cleanup
return 0;
}
Tak, ale możesz wskazać miejsce gdzie operator new ma stworzyć obiekt.
Kod:class Foo { };
int main()
{
Foo* f1 = new Foo;
Foo* f2 = new(f1) Foo;
assert((int)f1 == (int)f2);
return 0;
}
masz tutajKod:int **tab = new int*[5];
for(int i=0;i<5;i++)
tab[i] = new int[5];
//wypelnianie
for(int i=0;i<5;i++)
for(int j=0;j<5;j++)
cin >> tab[i][j];
//nowa tablica
int **tmp = new int*[1];
for(int i=0;i<1;i++)
tmp[i] = new int[1];
//wypelnianie
for(int i=0;i<1;i++)
for(int j=0;j<1;j++)
tmp[i][j]=tab[i][j];
delete[] tab;
tab=tmp;
@szulak ; ?
@Alex Fortune
@Gray
Gray ma racje, przecież to ten sam header (w C includujesz stdlib.h, w C++ cstdlib, który jest de facto tym 1.). Malloc i w C, i w C++ zwraca pointer na blok zaalokowanej pamięci.