Dokázal byste někdo provést implementaci Algoritmu Convex Hull jak je načrtnuto v tomto článku? Tak aby to bylo použitelné jako knihovna dll a abych tom mohl použít v Delphi. Mám na PC nainstalováno Visual Studio C++ 2010 a Delphi 7. C/C++ nerozumím. Mé očekávání je: chtěl bych to použít na detekci vnitřní hranice polygonu tvaru, tedy když znám souřadnice bodu uvnitř polygonu. Polygonem je například parcela na které stojí dva věžáky (tvar polygonu kopíruje tvar těch věžáků). Pro mě je uvedený algoritmus abstraktní, vrací se tam nějaký objekt H o kterém nevím co to vlastně je. Kdyby to tedy někdo zvládl, rád bych to použil v aplikaci Delphi voláním knihovny.
Fórum › C / C++
Implementace Convex Hull
Zadarmo ani kuře nehrabe. Inzerát patří do inzerce.
hu
#3 hlucheucho
Není to inzerát. Zeptám se tedy jinak. Poradíte mi někdo jak implementovat tento kód na starém C++98?
Začal jsem takto:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <stdbool.h>
// Origin coords: x, y
#define px first
#define py second
#define MAX 1000
#define INF 2147483647 // je to jen polovina rozsahu
typedef struct pair{
long long first;
long long second;
} pairll;
pairll pnts [MAX];
int compare(pairll a, pairll b)
{ return a.px<b.px;
}
#include <float.h> // DBL_MAX
double closest_pair(pairll pnts[],int n)
{
sort(pnts,pnts+n,compare);
double best=INF;
set<pairll> box;
box.insert(pnts[0]);
int left = 0;
for (int i=1;i<n;++i)
{
while (left<i && pnts[i].px-pnts[left].px > best)
box.erase(pnts[left++]);
for(typeof(box.begin()) it=box.lower_bound(make_pair(pnts[i].py-best, pnts[i].px-best));it!=box.end() && pnts[i].py+best>=it->py;it++)
best = min(best, sqrt(pow(pnts[i].py - it->py, 2.0)+pow(pnts[i].px - it->px, 2.0)));
box.insert(pnts[i]);
}
return best;
}
Přičemž dostávám chybu že funkce set() není deklarována. Podobně to bude s insert. O co tam jde nebo kde sehnat manuál k tomuto set a insert? Dělám do na CodeBlocks a nejsem si úplně jistý verzí C/C++.
set<> patří do StandardTemplateLibrary (STL) a ta je dostupná jak pro C99 tak i pro C++98
https://www.geeksforgeeks.org/set-in-cpp-stl/
stačí zahrnout danou knihovnu klauzulí include
https://en.cppreference.com/w/cpp/container/set
https://www.mygreatlearning.com/blog/set-in-cpp/
a insert je metoda STL
přepis toho kodu do C++ je poměrně jednoduchý jenom vytvoříš třídu "class"
https://cplusplus.com/doc/oldtutorial/classes/
a do ní vložíš metodu s názvem
double closest_pair(pairll pnts[],int n)
a strukturu
typedef struct pair{
problém ale je, že ty to chceš v CodeGear RAD Studiu 2022 Builder/C++
což momentálně nemá asi nikdo z nám nainstalovaný ... to je práce na 3 dny ti vyhovět ... chápeš jo ?
ale návod máš napsanej na netu
https://docwiki.embarcadero.com/RADStudio/Sydney/en/Creating_DLLs_in_C%2B%2BBuilder
potřebuješ jenom poslední RAD Studio ... to si asi stáhneš z bittorrentu...
dále nepíšeš s jakou modifikací to chceš napsat ... VCL ? Native WinAPI32 ? ... to je docela důležitá věc ... ale odhaduju že asi nativeWinAPI...
jestli se daj v RAD studiu použít DLL napsaný ve VisualStudiu to nevim, zatim sem to nikdy nedělal ale tady je manuál
https://docwiki.embarcadero.com/RADStudio/Sydney/en/Tutorial:_Using_Dynamic_Libraries_in_C%2B%2BBuilder_Applications
Já do nedělám v RAD já mám sice Visual Studio 2010 ale vyhovuje mi CodeBlocks IDE 13.12. Mám to všechno zastaralé, ale na základní jednodušší věci by to mohlo stačit. Tak asi jen poradit s kódem a zkompilovat to musím sám. Ale nedaří se mi rozjet ani to #include <set> nebo #include <set.h>
Pracuji na volnočasové aktivitě, je to projekt,kde lidi vyráběj věci pro druhé zadarmo a nemám fin. zdroje ani nejsem placený. Takže věc co dělám pokud se povede bude sloužit pro druhé aby mohli pracovat rychleji a efektivněji protože lidí kteří dělaj takhle jako hobby je málo. Je to algoritmus pro VŠ IT a to já nejsem. Takže nevím zda se podaří.
Pokud se nepovede zbývá jednodušší algoritmus něco jako na principu majáku, který vyšle určitý počet paprsků či signálů kolem dokola (min. 8 směrů detekce) a až narazí na barvu kterou hledám v obrazu, tak mohu zkustit detekovat okraje.
Jak použít set<T> (docela doprý příklad): https://www.geeksforgeeks.org/set-in-cpp-stl/ Připomenout, že bys měl více používat Google, je házení hrachu na zeď.
hu
#7 hlucheucho
Hluche ucho, ale jo, já ten článek mám otevřený a četl jsem ho, ale v tom starým Codeblocks mi nejde rozjet ta hlavička #include <set> - fatal error no such file or directory. S jistotou vím jen to že verze mého C++ je starší než C++11
Přičemž dostávám chybu že funkce set() není deklarována.
O tom, že nemůže najít icludovaný soubor nebyla ani zmínka. Kdyby ses pořádně podíval, tak kromě ve tvém kódu chybějící direktivy #include<set> je potřeba odkazovat na prostor jmen std, tedy std::set<pairll> box; Vůbec by se nic nestalo, kdyby sis ten příklad zkopíroval a zkusil zkompilovat. Pokud by to proběhlo bez chyby, tak něco prasíš (docela pravděpodobné), pokud napíše, že něco chybí, pak je potřeba hledat, jak to do tvého vývojového prostředí doinstalovat.
hu
https://stackoverflow.com/questions/5526373/codeblocks-cannot-find-vector-header řešil podobný problém. Jinak je důležité, jak jsi založil projekt (C nebo C++?), jestli má projekt povolené STL . Víc mne nenapadá, budeš muset gůglit.
hu
Možná by bylo lepší stáhnout a instalovat Visual Studio community ed., které je pro jednotlivce zdarma.
hu
přiznám se, že nevim kde si vzal ten kod v #4 ale to bude něco asi pro GCC kompiler pro linux a navíc to nedává smysl, sou tam blbosti pokud to chceš použít pro VisualStudio:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <stdbool.h>
#include <set>
#include <float.h> // DBL_MAX
#include <vector>
#include <algorithm>
#include <typeinfo>
// Origin coords: x, y
#define px first
#define py second
#define MAX 1000
#define INF 2147483647 // je to jen polovina rozsahu
typedef struct pair {
long long first;
long long second;
} pairll;
pairll pnts[MAX];
int compare(pairll a, pairll b)
{
return a.px < b.px;
}
#include <float.h> // DBL_MAX
double closest_pair(pairll pnts[], int n)
{
std::sort(pnts, pnts + n, compare);
double best = INF;
std::set<pairll> box;
box.insert(pnts[0]);
int left = 0;
for (int i = 1; i < n; ++i)
{
while (left<i && pnts[i].px - pnts[left].px > best)
box.erase(pnts[left++]);
for (decltype(box.begin()) it = box.lower_bound(std::make_pair(pnts[i].py - best, pnts[i].px - best));
it != box.end() && pnts[i].py + best >= it->py; it++) {
best = std::min(best, sqrt(pow(pnts[i].py - it->py, 2.0) + pow(pnts[i].px - it->px, 2.0)));
}// for
box.insert(pnts[i]);
}
return best;
}
Přeinstaloval jsem ten Codeblocks a založil nový projekt C++. Headery to načetlo a teď mám chybovou hlášku:
main.h||In function 'double closest_pair(pairll*, int)':|
main.h|42|error: no matching function for call to 'std::set<pair>::lower_bound(std::pair<double, double>)'|
main.h|42|note: candidates are:|
mingw\bin\..\lib\gcc\mingw32\4.7.1\include\c++\bits\stl_set.h|633|note: std::set<_Key, _Compare, _Alloc>::iterator std::set<_Key, _Compare, _Alloc>::lower_bound(const key_type&) [with _Key = pair; _Compare = std::less<pair>; _Alloc = std::allocator<pair>; std::set<_Key, _Compare, _Alloc>::iterator = std::_Rb_tree_const_iterator<pair>; std::set<_Key, _Compare, _Alloc>::key_type = pair]|
mingw\bin\..\lib\gcc\mingw32\4.7.1\include\c++\bits\stl_set.h|633|note: no known conversion for argument 1 from 'std::pair<double, double>' to 'const key_type& {aka const pair&}'|
mingw\bin\..\lib\gcc\mingw32\4.7.1\include\c++\bits\stl_set.h|637|note: std::set<_Key, _Compare, _Alloc>::const_iterator std::set<_Key, _Compare, _Alloc>::lower_bound(const key_type&) const [with _Key = pair; _Compare = std::less<pair>; _Alloc = std::allocator<pair>; std::set<_Key, _Compare, _Alloc>::const_iterator = std::_Rb_tree_const_iterator<pair>; std::set<_Key, _Compare, _Alloc>::key_type = pair]|
mingw\bin\..\lib\gcc\mingw32\4.7.1\include\c++\bits\stl_set.h|637|note: no known conversion for argument 1 from 'std::pair<double, double>' to 'const key_type& {aka const pair&}'|
main.cpp||In function 'int main()':|
main.cpp|7|error: 'cout' was not declared in this scope|
main.cpp|7|error: 'endl' was not declared in this scope|
mingw\bin\..\lib\gcc\mingw32\4.7.1\include\c++\bits\stl_function.h||In instantiation of 'bool std::less<_Tp>::operator()(const _Tp&, const _Tp&) const [with _Tp = pair]':|
mingw\bin\..\lib\gcc\mingw32\4.7.1\include\c++\bits\stl_tree.h|1285|required from 'std::pair<std::_Rb_tree_iterator<_Val>, bool> std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_insert_unique(const _Val&) [with _Key = pair; _Val = pair; _KeyOfValue = std::_Identity<pair>; _Compare = std::less<pair>; _Alloc = std::allocator<pair>]'|
mingw\bin\..\lib\gcc\mingw32\4.7.1\include\c++\bits\stl_set.h|415|required from 'std::pair<typename std::_Rb_tree<_Key, _Key, std::_Identity<_Key>, _Compare, typename _Alloc::rebind<_Key>::other>::const_iterator, bool> std::set<_Key, _Compare, _Alloc>::insert(const value_type&) [with _Key = pair; _Compare = std::less<pair>; _Alloc = std::allocator<pair>; typename std::_Rb_tree<_Key, _Key, std::_Identity<_Key>, _Compare, typename _Alloc::rebind<_Key>::other>::const_iterator = std::_Rb_tree_const_iterator<pair>; std::set<_Key, _Compare, _Alloc>::value_type = pair]'|
U:\C++\Console\ConvexHull\convexhull\main.h|36|required from here|
mingw\bin\..\lib\gcc\mingw32\4.7.1\include\c++\bits\stl_function.h|237|error: no match for 'operator<' in '__x < __y'|
mingw\bin\..\lib\gcc\mingw32\4.7.1\include\c++\bits\stl_function.h|237|note: candidates are:|
mingw\bin\..\lib\gcc\mingw32\4.7.1\include\c++\bits\stl_pair.h|218|note: template<class _T1, class _T2> bool std::operator<(const std::pair<_T1, _T2>&, const std::pair<_T1, _T2>&)|
mingw\bin\..\lib\gcc\mingw32\4.7.1\include\c++\bits\stl_pair.h|218|note: template argument deduction/substitution failed:|
mingw\bin\..\lib\gcc\mingw32\4.7.1\include\c++\bits\stl_function.h|237|note: 'const pair' is not derived from 'const std::pair<_T1, _T2>'|
mingw\bin\..\lib\gcc\mingw32\4.7.1\include\c++\bits\stl_iterator.h|299|note: template<class _Iterator> bool std::operator<(const std::reverse_iterator<_Iterator>&, const std::reverse_iterator<_Iterator>&)|
mingw\bin\..\lib\gcc\mingw32\4.7.1\include\c++\bits\stl_iterator.h|299|note: template argument deduction/substitution failed:|
mingw\bin\..\lib\gcc\mingw32\4.7.1\include\c++\bits\stl_function.h|237|note: 'const pair' is not derived from 'const std::reverse_iterator<_Iterator>'|
mingw\bin\..\lib\gcc\mingw32\4.7.1\include\c++\bits\stl_iterator.h|349|note: template<class _IteratorL, class _IteratorR> bool std::operator<(const std::reverse_iterator<_IteratorL>&, const std::reverse_iterator<_IteratorR>&)|
mingw\bin\..\lib\gcc\mingw32\4.7.1\include\c++\bits\stl_iterator.h|349|note: template argument deduction/substitution failed:|
mingw\bin\..\lib\gcc\mingw32\4.7.1\include\c++\bits\stl_function.h|237|note: 'const pair' is not derived from 'const std::reverse_iterator<_IteratorL>'|
mingw\bin\..\lib\gcc\mingw32\4.7.1\include\c++\bits\stl_tree.h|873|note: template<class _Key, class _Val, class _KeyOfValue, class _Compare, class _Alloc> bool std::operator<(const std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>&, const std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>&)|
mingw\bin\..\lib\gcc\mingw32\4.7.1\include\c++\bits\stl_tree.h|873|note: template argument deduction/substitution failed:|
mingw\bin\..\lib\gcc\mingw32\4.7.1\include\c++\bits\stl_function.h|237|note: 'const pair' is not derived from 'const std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>'|
mingw\bin\..\lib\gcc\mingw32\4.7.1\include\c++\bits\stl_set.h|721|note: template<class _Key, class _Compare, class _Alloc> bool std::operator<(const std::set<_Key, _Compare, _Alloc>&, const std::set<_Key, _Compare, _Alloc>&)|
mingw\bin\..\lib\gcc\mingw32\4.7.1\include\c++\bits\stl_set.h|721|note: template argument deduction/substitution failed:|
mingw\bin\..\lib\gcc\mingw32\4.7.1\include\c++\bits\stl_function.h|237|note: 'const pair' is not derived from 'const std::set<_Key, _Compare, _Alloc>'|
mingw\bin\..\lib\gcc\mingw32\4.7.1\include\c++\bits\stl_multiset.h|702|note: template<class _Key, class _Compare, class _Alloc> bool std::operator<(const std::multiset<_Key, _Compare, _Alloc>&, const std::multiset<_Key, _Compare, _Alloc>&)|
mingw\bin\..\lib\gcc\mingw32\4.7.1\include\c++\bits\stl_multiset.h|702|note: template argument deduction/substitution failed:|
mingw\bin\..\lib\gcc\mingw32\4.7.1\include\c++\bits\stl_function.h|237|note: 'const pair' is not derived from 'const std::multiset<_Key, _Compare, _Alloc>'|
mingw\bin\..\lib\gcc\mingw32\4.7.1\include\c++\bits\stl_vector.h|1387|note: template<class _Tp, class _Alloc> bool std::operator<(const std::vector<_Tp, _Alloc>&, const std::vector<_Tp, _Alloc>&)|
mingw\bin\..\lib\gcc\mingw32\4.7.1\include\c++\bits\stl_vector.h|1387|note: template argument deduction/substitution failed:|
mingw\bin\..\lib\gcc\mingw32\4.7.1\include\c++\bits\stl_function.h|237|note: 'const pair' is not derived from 'const std::vector<_Tp, _Alloc>'|
||=== Build failed: 4 error(s), 4 warning(s) (0 minute(s), 0 second(s)) ===|
stahni si normalně MS VS 2022, Professional: KEY: TD244-P4NB7-YQ6XK-Y8MMM-YWV2J
a založ si konzolovou aplikaci v C++ a tady je návod jak se udělá DLL
https://learn.microsoft.com/en-us/cpp/build/walkthrough-creating-and-using-a-dynamic-link-library-cpp?view=msvc-170
neni jasný co používáš za kompiler v tom tvym CodeBlocku .. GCC++ ??? jinej ?
#19 JerryM
Díky za kód. Napíšu jaké hlášky mi to hodilo při pokusu o kompilaci:
Chyba: in C++98 'P_in' must be initialized by constructor, not by '{...}'|
std::vector<Point> P_in = { {0,0}, {10,10}, {0,10}, {10,0} };
upozornění ke stejnému řádku (71):
warning: extended initializer lists only available with -std=c++11 or -std=gnu++11 [enabled by default]|
warning: extended initializer lists only available with -std=c++11 or -std=gnu++11 [enabled by default]|
finta s modulo https://cplusplus.com/reference/cstdlib/rand/
hu
#30 hlucheucho
Přiznám se že jsem tomu kodu s modulo neporozumněl, ale hlavně že funguje. Je to krása ten kód. Aspoň tedy pro mě :) Díky. Dále se budu snažit přijít na to jak to předělat na knihovnu a použít to v Delphi. Protože Delphi je pro mě jednodušší a poněkud bližší. Takže zkusím vzít například obrázek nebo výstup z obrazovky a asi by to ještě chtělo dodělat, aby to umělo pracovat s handle (tužím že se tam předává handle na DC - device context nebo tak něco). Takže místo pole náhodných čísel tam budou skutečné data z obrazovky nebo z obrázku.
Dále by stálo za přemýšlení zda bude možné zjednodušit algoritmus protože v některých situacích můžeme bezpečně říct, kdy nepotřebujeme bod ukládat. Například, když předchozí souřadnice byla 20,21 a nyní máme 20,22, bezpečně víme, že bude minimálně jeden bod vypuštěn. Takže je možné uložit oldX=20; a při další interakci zase provést porovnání takže když x=20 a oldX=20 tak zase není třeba bod ukládat. To jen mě teď napadlo - co nevím - protože tomu algoritmu stejně nerozumím, jdestli to půjde. Ale pokud jo, bude to fajn. Takže dnes asi pauza a zítra se podívám na Delphi nebo jak to předělat do dll v C++.
Jo a tady je ten kod co jsem testoval:
// ConvexHull.cpp : This file contains the 'main' function. Program execution begins and ends there.
//
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <stdbool.h>
#include <set>
#include <float.h> // DBL_MAX
#include <vector>
#include <algorithm>
#include <typeinfo>
#include <cstdlib> // rand()
using namespace std;
#include<ctime> // time()
// Origin coords: x, y
#define px first
#define py second
#define MAX 1000
#define INF 2147483647 // je to jen polovina rozsahu
struct Point {
double x, y;
};
bool compare(Point a, Point b)
{
return a.x < b.x || (a.x == b.x && a.y < b.y);
}
//Returns positive value if B lies to the left of OA, negative if B lies to the right of OA, 0 if collinear
double cross(const Point& O, const Point& A, const Point& B)
{
return (A.x - O.x) * (B.y - O.y) - (A.y - O.y) * (B.x - O.x);
}
//Returns a list of points on the convex hull
std::vector<Point> convex_hull(std::vector<Point> P)
{
int n = P.size(), k = 0;
std::vector<Point> H(2 * n);
std::sort(P.begin(), P.end(), compare);
// Build lower hull
for (int i = 0; i < n; ++i) {
while (k >= 2 && cross(H[k - 2], H[k - 1], P[i]) <= 0) k--;
H[k++] = P[i];
}
// Build upper hull
//i starts from n-2 because n-1 is the point which both hulls will have in common
//t=k+1 so that the upper hull has atleast two points to begin with
for (int i = n - 2, t = k + 1; i >= 0; i--) {
while (k >= t && cross(H[k - 2], H[k - 1], P[i]) <= 0) k--;
H[k++] = P[i];
}
//the last point of upper hull is same with the fist point of the lower hull
H.resize(k - 1);
return H;
}
int main()
{
std::cout << "Hello World!\n";
std::vector<Point> P_in;
srand(time(0));
std::cout << "Input vector points: ";
for(int a = 0; a < 35; a++)
{
for(int b = 0; b < 20; b++)
{
int x = rand() % 100;
int y = rand() % 100;
std::cout << x << " " << y;
std::cout << '\n';
P_in.push_back({x, y});
}
}
//std::vector<Point> P_in = { {0,0}, {10,10}, {0,10}, {10,0} };
std::vector<Point> P_out = convex_hull(P_in);
std::cout << "Output vector size: " << P_out.size();
std::cout << '\n';
for (int i = 0; i < P_out.size(); i++) {
std::cout << P_out[i].x << " " << P_out[i].y;
std::cout << '\n';
}// for
}// main
Pochopil jsem to tedy tak, že musím napsat algoritmus na čtení dat (konkrétně souřadnic z obrázku). Uživatel klikne někam dovnitř polygonu a já musím v Delphi napsat aplikaci, která přečte jednotlivé řádky (většina je řerná barva, takže většina bodů bude ignorována a předá se jen to co je v rozsahu tmavě zelené barvy). Když vytvořím funkci či proceduru v Delphi, která zavolá proceduru ConexHull.dll, tak je možné předat odkaz na tuto proměnnou a sdílet mezi aplikacemi paměť, tedy to pole se souřadnicemi?
Při realizaci dll narazíš na potíže s Delphi nekompatibilním vectorem, který je parametrem a návratovou hodnotou funkce. Dále budeš muset nastudovat další aspekty související s kompatibilitou dll s Delphi. Má to docela dost úskalí.
V podstatě z hlavního programu voláš jen jednu funkci. Spíš bych uvažoval o přepsání do Delphi. Ekvivalent std::vector a std::sort by se asi dali najít a nebo v nejhorším implementovat.
hu
Při spuštění mnou vloženého kódu #31 nerozumím tomu proč jsou ve výsledku souřadnice, které jsem na vstupu nezadával. Příklad:
Output vector size: 8
0 0
49 0
98 1
99 11
99 98
90 99
17 99
0 97
Tyto body neexistují ve vstupu. Jediný existující bod je 49, 0
Všechny body ze vstupu:
97 68
34 38
74 10
62 19
26 55
87 17
90 90
3 43
78 23
58 53
56 61
40 3
92 80
12 57
70 71
79 65
60 59
92 90
27 66
62 27
37 13
58 35
41 88
67 98
74 87
76 48
67 12
13 9
54 72
76 29
99 66
13 80
83 11
67 56
14 91
14 61
86 30
58 85
90 54
97 18
18 44
92 17
43 1
49 0
89 19
65 75
70 65
24 62
98 91
14 34
49 1
65 69
21 22
94 30
33 27
28 57
1 85
62 43
83 20
61 2
86 41
6 28
12 67
25 89
21 44
94 29
81 33
59 51
10 48
54 2
36 76
20 57
65 39
22 78
25 51
56 18
56 98
11 21
93 68
27 59
19 85
81 78
34 19
32 82
73 4
2 65
65 20
34 37
40 10
85 6
71 5
2 68
97 25
33 12
81 85
66 18
17 7
62 44
96 42
17 61
81 64
83 47
90 8
17 33
7 9
10 79
66 12
27 88
23 62
71 35
48 30
43 25
91 73
1 62
95 83
41 97
95 37
16 77
53 76
53 97
70 21
2 77
54 28
24 98
39 62
69 81
69 98
49 24
1 88
74 62
94 5
61 83
63 14
2 49
94 19
15 64
17 5
72 49
83 67
12 31
1 81
80 45
89 14
76 7
31 68
34 43
94 37
24 27
49 17
84 88
31 89
37 16
24 94
48 73
41 30
72 37
85 14
7 85
56 25
72 82
80 28
13 1
31 27
42 53
73 50
18 86
10 95
54 88
50 27
34 30
11 16
10 13
87 2
58 60
22 36
50 5
6 33
21 95
45 46
55 70
6 54
36 36
21 37
55 93
12 21
47 65
22 38
0 44
86 20
57 58
7 43
49 16
15 14
12 23
12 26
64 64
42 45
19 92
82 38
62 93
10 96
78 20
98 75
6 88
87 57
5 71
70 29
70 3
36 16
21 76
43 88
64 40
91 78
22 44
22 47
90 69
32 79
35 5
7 25
18 94
78 36
81 19
5 38
43 3
80 86
57 46
55 76
47 19
54 50
13 78
68 67
83 81
86 42
99 26
13 12
94 23
67 63
10 22
74 3
59 66
85 13
42 26
33 93
98 36
79 32
5 48
54 95
78 42
99 95
1 61
87 17
18 18
82 39
58 1
46 84
3 97
69 96
46 2
98 64
64 42
5 69
56 41
14 19
10 42
16 87
45 13
3 12
96 38
70 50
8 38
89 28
89 13
73 40
45 67
77 41
85 71
57 12
69 73
53 78
71 90
41 45
15 22
71 56
70 57
0 84
81 86
10 40
92 44
57 21
hm, nevim jestli napsání kodu ve VS C++ a jeho transfer do RAD studio C++ Builder/Clang je to nejlepší spíš si prostě budeš muset nainstalovat RAD studio a napsat to v C++Builderu v RAD studiu 2022
https://docwiki.embarcadero.com/CodeExamples/Sydney/en/Generic_vector_sort_(C%2B%2B)
návod na sepsání a import DLL pro MSVS C++ je tady:
https://www.codeproject.com/Articles/6351/Regular-DLL-Tutor-For-Beginners
https://www.codeproject.com/Articles/28969/HowTo-Export-C-classes-from-a-DLL
pro RAD studio sem to bohužel nenašel ...
jestli si nikdy nedělal v RAD studiu tak to stejně dohromady nedáš
Jaký je rozdíl mezi contejnery vector vs set?
Co na to Google? Zase ses vysral na hledání. Vlastně jako vždycky.
hu
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Implementace Z-Buffer — založil Yimo
C# implementace ffdshow — založil Jiří
Implementace grafu — založil Ondřej Benda
Implementace operator[][] — založil cibule
Implementace grafu jfreechart — založil Pavel
Moderátoři diskuze