std::find — это алгоритм из библиотеки <algorithm> в C++, который используется для поиска элемента в диапазоне. Он принимает три аргумента: итераторы начала и конца диапазона, а также значение, которое нужно найти.#include <vector>
#include <algorithm>
#include <iostream>
std::vector<int> vec = {1, 2, 3, 4, 5};
auto it = std::find(vec.begin(), vec.end(), 3);
if (it != vec.end()) {
std::cout << "Element found at index: " << std::distance(vec.begin(), it) << std::endl;
} else {
std::cout << "Element not found" << std::endl;
}
std::find возвращает итератор на него, иначе — итератор конца.Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11❤2
union, но с поддержкой типов, которые имеют нестандартные конструкторы и деструкторы.#include <variant>
#include <iostream>
int main() {
std::variant<int, double, std::string> data;
data = 10;
std::cout << std::get<int>(data) << std::endl;
data = 3.14;
std::cout << std::get<double>(data) << std::endl;
data = "Hello";
std::cout << std::get<std::string>(data) << std::endl;
return 0;
}
std::get для доступа к текущему значению.Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11❤2
#include <iostream>
// Определение структуры
struct Point {
int x;
int y;
// Метод для вывода координат
void print() {
std::cout << "Point(" << x << ", " << y << ")" << std::endl;
}
};
int main() {
// Создание экземпляра структуры
Point p;
p.x = 10;
p.y = 20;
// Вызов метода структуры
p.print(); // Вывод: Point(10, 20)
}
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12
#include <iostream>
using namespace std;
// Базовый класс
class Animal {
public:
void eat() {
cout << "Eating..." << endl;
}
};
// Производный класс
class Dog : public Animal {
public:
void bark() {
cout << "Barking..." << endl;
}
};
int main() {
Dog dog;
dog.eat(); // Наследованный метод
dog.bark(); // Собственный метод
return 0;
}
Производный класс
Dog наследует метод eat() от базового класса Animal.Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9❤1
<iostream> для консольного ввода/вывода и <fstream> для работы с файлами.Пример создания потока для чтения из файла:
#include <fstream>
#include <iostream>
#include <string>
int main() {
std::ifstream file("example.txt"); // Создание потока для чтения из файла
std::string line;
if (file.is_open()) {
while (getline(file, line)) { // Чтение файла построчно
std::cout << line << std::endl; // Вывод строки на консоль
}
file.close(); // Закрытие файла
} else {
std::cerr << "Не удалось открыть файл" << std::endl;
}
return 0;
}
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7
shared_ptr. Он не увеличивает счетчик ссылок на объект, что помогает избежать циклических зависимостей и утечек памяти.weak_ptr используется для проверки существования объекта и получения shared_ptr, если объект еще существует. Для этого применяется метод lock(), который возвращает shared_ptr.#include <iostream>
#include <memory>
class Node {
public:
std::weak_ptr<Node> next; // Слабая ссылка на следующий узел
};
int main() {
auto node1 = std::make_shared<Node>();
auto node2 = std::make_shared<Node>();
node1->next = node2; // Установка слабой ссылки
if (auto sharedNext = node1->next.lock()) {
std::cout << "Next node is alive\n";
} else {
std::cout << "Next node is expired\n";
}
}
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🤩1
#include <type_traits>
// Функция доступна только для целых типов
template <typename T>
typename std::enable_if<std::is_integral<T>::value, T>::type
foo(T value) {
return value * 2;
}
// Функция доступна только для вещественных типов
template <typename T>
typename std::enable_if<std::is_floating_point<T>::value, T>::type
foo(T value) {
return value / 2;
}
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤1
#include <iostream>
using namespace std;
class Base {
public:
virtual void show() { // Виртуальная функция
cout << "Base class" << endl;
}
};
class Derived : public Base {
public:
void show() override { // Переопределение функции
cout << "Derived class" << endl;
}
};
int main() {
Base* obj = new Derived();
obj->show(); // Вызов функции Derived
delete obj;
}
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤1
std::thread::detach используется для отделения потока от объекта std::thread, позволяя потоку продолжать выполнение независимо. После вызова detach, объект std::thread больше не связан с потоком и не может быть использован для управления им. Это полезно, когда поток должен работать в фоновом режиме, но важно помнить, что необходимо обеспечить завершение потока до завершения программы, иначе поведение будет неопределённым.
#include <iostream>
#include <thread>
void backgroundTask() {
// Фоновая задача
std::cout << "Фоновая задача выполняется\n";
}
int main() {
std::thread t(backgroundTask);
t.detach(); // Отделяем поток
// Поток продолжает выполнение независимо
std::cout << "Главный поток завершён\n";
return 0;
}
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤1
set и multiset — это контейнеры из библиотеки стандартных шаблонов (STL), которые хранят элементы в отсортированном порядке. #include <set>
#include <iostream>
int main() {
std::set<int> s = {1, 2, 3};
s.insert(2); // Дубликат не добавится
for (int x : s) {
std::cout << x << " "; // Вывод: 1 2 3
}
}
#include <set>
#include <iostream>
int main() {
std::multiset<int> ms = {1, 2, 3};
ms.insert(2); // Дубликат добавится
for (int x : ms) {
std::cout << x << " "; // Вывод: 1 2 2 3
}
}
Основное отличие в том, что
set не допускает дубликатов, а multiset — допускает.Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9❤1🤔1