Zespolona operator+(const Zespolona& left, const Zespolona& right) { ... }
Zespolona operator-(const Zespolona& left, const Zespolona& right) { ... }
friend Zespolona operator+(const Zespolona& left, const Zespolona& right);
friend Zespolona operator-(const Zespolona& left, const Zespolona& right);
Double
во Float
, то в Swift это выполняется с помощью конструктора:let coordinateSpan: MKCoordinateSpan = ...
let latitudeFloat = Float(coordinateSpan.latitudeDelta)
let longitudeFloat = Float(coordinateSpan.longitudeDelta)
i++;
(int&)i += sizeof(uint32_t);
for (auto& neuron : neurons)
template<typename Func> void MyFunc (const Func & otherFunc);
template<typename Func> void MyFunc (Func&& otherFunc);
field = std::forward<Func>(otherFunc);
void MyFunc (const auto & otherFunc);
void MyFunc (const std::function<void()> & otherFunc);
void MyFunc (const void (&otherFunc)());
scanf("%d", &airport[i].numr);
// =>
scanf("%d\n", &airport[i].numr);
printf("\n%d", airport[i].numr);
// =>
printf("%d\n", airport[i].numr);
int compare_prices(const void* price1, const void* price2) {
const char* name1 = ((const price*)price1)->name;
const char* name2 = ((const price*)price2)->name;
return strcmp(name1, name2);
}
qsort(МАССИВ_СТРУКТУР, РАЗМЕР_МАССИВА, sizeof(price), &compare_prices);
std::string
не имелся в виду.char*
, хотя это тип указателя на один char
.char[8]
, принято передавать как указатель на его первый элемент: char*
. Более того, при передаче массива в функцию он автоматически разлагается (decays) до указателя на первый элемент.*(p+3)
или p[3]
, что одно и то же. Итак, указатель в коде C может указывать как на одну переменную, так и на целый массив (точнее, его начало).int
или любого другого типа обычно вместе с указателем на первый элемент передают размер массива. Но строки C завершаются нулевым символом, поэтому здесь длина известна и так. Вот и получается, что char*
используют вместо char[N]
.int (*arr)[10] = malloc(sizeof(*arr) * 5);
TemplateRequirement(TemplateRequirement &);
TemplateRequirement& operator=(TemplateRequirement&);
TemplateRequirement(const TemplateRequirement &);
TemplateRequirement& operator=(const TemplateRequirement&);
QString
и QString&
на const QString&
. #include <stdlib.h>
#include <stdio.h>
struct TNode {
int data;
struct TNode *next;
};
typedef struct TNode Node;
struct TQueue {
Node* head;
Node* tail;
};
typedef struct TQueue Queue;
Queue* newQueue()
{
Queue* queue = malloc(sizeof(Queue));
queue->head = NULL;
queue->tail = NULL;
return queue;
}
void deleteQueue(Queue* queue)
{
Node* current = queue->head;
while (current != NULL) {
Node* next = current->next;
free(current);
current = next;
}
free(queue);
}
void pushBackQueue(Queue* queue, int data)
{
Node* newNode = malloc(sizeof(Node));
newNode->data = data;
newNode->next = NULL;
if (queue->tail == NULL) {
queue->head = newNode;
queue->tail = newNode;
}
else {
queue->tail->next = newNode;
queue->tail = newNode;
}
}
void splitQueue(Queue* source, Queue* even, Queue* odd)
{
for (Node* current = source->head; current != NULL; current = current->next) {
int data = current->data;
pushBackQueue((data % 2 == 0) ? even : odd, data);
}
}
void printQueue(Queue* queue)
{
for (Node* current = queue->head; current != NULL; current = current->next) {
printf("%d ", current->data);
}
printf("\n");
}
int main()
{
Queue* source = newQueue();
for (int i = 0; i < 20; i++) {
pushBackQueue(source, i + 1);
}
printQueue(source);
Queue* even = newQueue();
Queue* odd = newQueue();
splitQueue(source, even, odd);
printQueue(even);
printQueue(odd);
deleteQueue(source);
deleteQueue(even);
deleteQueue(odd);
system("pause"); // not needed in Linux
return 1;
}
cv::Mat writeOnImage(const cv::Mat& source, const std::vector<std::string>& lines, int width)
{
auto rect = source.clone();
cv::rectangle(rect, { 10, 10 }, { width, 20 + 50 * static_cast<int>(lines.size()) }, cv::Scalar(0, 0, 0), cv::FILLED);
auto result = cv::Mat();
cv::addWeighted(source, 0.6, rect, 0.4, 0.0, result);
for (size_t i = 0; i < lines.size(); ++i) {
cv::putText(result, lines[i], { 20, 50 + 50 * static_cast<int>(i) }, cv::FONT_HERSHEY_PLAIN, 3, cv::Scalar(10, 255, 255), 3, cv::LINE_8);
}
return result;
}