struct S {
int n = 42;
S() : n(7) {} // will set n to 7, not 42
};
но если сделать иклюд с двух сторон, то так уже не выйдет
Еще вот в сим карте, функция getCall(src: const SimCard*) - что это значит в плане кода, когда функция идет на обьет своего же класса?
//! Brief description.
//function try to parse with aPoint decimal delimiter using position order in vector
//in example: if aPoint[0] fails try aPoints[1] etc...
bool tryParseFloat(const wchar_t* aData, const std::vector<wchar_t>& aPoint, float& rValue) {}
tryParseFloat(data, {L'.', L','}, value);
//или
bool tryParseFloat(const wchar_t* aData, const wchar_t* aPoint, float& rValue) {}
tryParseFloat(data, L".,", value);
float tryParseFloat(const wchar_t* aData, const std::vector<wchar_t>& aPoint, bool& result) {}
float tryParseFloat(const wchar_t* aData, const std::vector<wchar_t>& aPoint, float default_value = 0.0f) {}
void func_disk ()
{
LPCWSTR lpDeviceName[8] = { L"A:", L"B:", L"C:", L"D:", L"E:", L"F:", L"G:", L"K:" };
TCHAR lpTargetPath[1000];
for (int i = 0; i <= 7; i++)
{
DWORD retval = QueryDosDevice ( lpDeviceName[i], (LPWSTR)lpTargetPath, 1000 );
auto err = GetLastError ();
std::wstring w1 ( lpDeviceName[i] );
std::wcout << L"retval: " << retval << " err: " << err << std::endl;
if (retval == 0 || retval == ERROR_INSUFFICIENT_BUFFER)
{
std::wcout << L"QueryDosDevice fails " << w1 << std::endl;
continue;
}
std::wstring w2 ( lpTargetPath );
std::wcout << w1 << " " << w2 << std::endl;
}
}
//Список рёбер
// QList<Edge> bufferVertex;
std::vector<Edge> bufferVertex;
//Потом максимальной степени вершины
maxDegree = 4;
//нужно 2 булевы переменные
bool f;
//Окрашенные рёбра, colorEdges[i] - цвет, colorEdges[i][j] - ребро
// QList< QList<Edge> > colorEdges;
std::vector<std::vector<Edge>> colorEdges(maxDegree);
for (int i = 0; i < colorEdges.size(); i++){
colorEdges[i].reserve(bufferVertex.size());
}
//Потом максимальной степени вершины
// int *colors = new int[bufferVertex.size()];
// for (int i = 0; i < bufferVertex.size(); i++)
// colors[i] = 0;
std::vector<int> colors(bufferVertex.size(), 0);
do
{
f = false;
//Перебор возможный комбинаций цветов
for (int i = 0; i < colors.size(); i++)
if (colors[i] != maxDegree-1)
{
colors[i]++;
for (int j = i - 1; j > -1; j--)
colors[j] = 0;
break;
}
//Окраска в текущую комбинация цветов
// colorEdges.clear();
//удалять объекты внутри не надо, а просто их чистим
for (int i = 0; i < colorEdges; i++){
colorEdges[i].clear();
}
for (int i = 0; i < bufferVertex.size(); i++){
colorEdges[colors[i]].push_back(bufferVertex[i]);
//нужен ли этот 2ой цикл снизу, может достаточно проверять только последнее вставленное значени?
//for (int j = 0; j < colorEdges[i].size()-1 && !f; j++){
// auto start_j = colorEdges[i][j].getStart();
// auto end_j = colorEdges[i][j].getEnd();
// auto start_k = colorEdges[i].back().getStart();
// auto end_k = colorEdges[i].back().getEnd();
// f = start_j==start_k || start_j == end_k || end_j == start_k || end_j==end_k;
// }
for (int j = 0; j < colorEdges[i].size() && !f; j++)
for (int k = j + 1; k < colorEdges[i].size() && !f; k++)
{
// if ((colorEdges[i][j].getStart() == colorEdges[i][k].getStart()) ||
// (colorEdges[i][j].getStart() == colorEdges[i][k].getEnd()) ||
// (colorEdges[i][j].getEnd() == colorEdges[i][k].getStart()) ||
// (colorEdges[i][j].getEnd() == colorEdges[i][k].getEnd()))
// f = true;
auto start_j = colorEdges[i][j].getStart();
auto end_j = colorEdges[i][j].getEnd();
auto start_k = colorEdges[i][k].getStart();
auto end_k = colorEdges[i][k].getEnd();
f = start_j==start_k || start_j == end_k || end_j == start_k || end_j==end_k;
}
}
if (f) //Если окрасился неправильно, проверяем не закончился ли счётчик
{
f = false;
for (int i = 0; i < bufferVertex.size() && !f; i++)
f = colors[i] != (maxDegree - 1);
}
} while (f);
class A
{
private:
char* ptr;
int size;
public:
A(char* initial){/*allocate etc*/}
~A(){/*deallocate etc*/}
//конструктор копирования
A(const A& other) {
size = other.size;
ptr = new char[size];
memcpy(ptr, other.ptr, size ); }
//конструктор перемещения
A(A&& other) {
size = other.size;
ptr = other.ptr;
other.size = 0;
other.ptr = nullptr; }
#if _WIN32_WINNT >= 0x0600
WINBASEAPI WINBOOL WINAPI GetQueuedCompletionStatusEx (HANDLE CompletionPort, LPOVERLAPPED_ENTRY lpCompletionPortEntries, ULONG ulCount, PULONG ulNumEntriesRemoved, DWORD dwMilliseconds, WINBOOL fAlertable);
WINBASEAPI WINBOOL WINAPI CancelIoEx (HANDLE hFile, LPOVERLAPPED lpOverlapped);