Skip to content

Instantly share code, notes, and snippets.

#include <boost/array.hpp>
#include <boost/asio.hpp>
#include <cstdlib>
#include <iostream>
#include <memory>
#include <utility>
using boost::asio::ip::tcp;
/// Пример 0. Бред какой-то.
#include <algorithm>
#include <functional>
#include <iostream>
#include <string>
#include <vector>
using Compare = std::function<bool(int, int)>;
using IT = std::vector<int>::iterator;
void my_sort(IT beg, IT end, Compare cmp) {
for (auto i = beg; i != end; ++i) {

Задание 1

Реализовать парсер данных в формате JSON.

JSON-текст представляет собой в закодированном виде одну из двух структур:

  • Объект - это неупорядоченное множество пар ключ:значение, разделяемых запятыми. Всё множество заключается в фигурные скобки {}. Ключом может быть только регистрозависимая строка. Значением может быть объект, массив, число, литералы (true, false, null) или строка;
  • Массив - это упорядоченное множество значений. Массив заключается в квадратные скобки [], а значения разделяются запятыми.

Пример входных данных в формате JSON:

{
#include <iostream>
using namespace std;
void
base_function (void *const this_obj)
{
std::cout << "b" << std::endl;
}
bool TargetFunction(const nlohman::json& json, Results& out) {
if (json["key1"] != "static string")
return false;
if (json["search_type"] == "QUEUE") {
// основная логика функции, дальнейший парсинг json
} else if (json["search_type"] == "STACK") {
// основная логика функции, дальнейший парсинг json
} else {
// основная логика функции, дальнейший парсинг json
}
## image 1
graph TD
style BQ fill:#bef574,stroke:#556832
style C1 fill:#7bb0b0,stroke:#4b7d7d
style C2 fill:#7bb0b0,stroke:#4b7d7d
style C3 fill:#7bb0b0,stroke:#4b7d7d
style CM fill:#7bb0b0,stroke:#4b7d7d
P1[Producer 1] --> BQ((Queue))
P2[Producer 2] -->BQ
4.05s$ ./tools/polly/bin/polly --reconfig --test --config Release --fwd CMAKE_EXE_LINKER="-fuse-ld=gold"
Python version: 3.4
Build dir: /home/travis/build/bmstu-iu8-11-cpp-2018/lab-05-govyadkin/_builds/default-Release
Execute command: [
  `which`
  `cmake`
]
[/home/travis/build/bmstu-iu8-11-cpp-2018/lab-05-govyadkin]> "which" "cmake"
/usr/local/cmake-3.9.2/bin/cmake
//
// Copyright (c) 2016-2017 Vinnie Falco (vinnie dot falco at gmail dot com)
//
// Distributed under the Boost Software License, Version 1.0. (See accompanying
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
//
// Official repository: https://github.com/boostorg/beast
//
//------------------------------------------------------------------------------

Как собрать boost

  1. Скачивает boost.zip c оффсайта
  2. Распаковываем в C:\devel\boost
  3. Запускаем консоль
  4. набираем cd C:\devel\boost\
  5. запускаем в консоли bootstrap.bat
  6. Ждем
  7. запускаем в консоли b2 address-model=32 architecture=x86 threading=multi link=static runtime-link=static debug-symbols=on debug-store=database
  8. долго ждем
  9. запускаем в консоли b2 address-model=64 architecture=x86 threading=multi link=static runtime-link=static debug-symbols=on debug-store=database
/*
вот как должен выглядеть код первокурсника, который использует вашу библиотеку
*/
void MainCallback(const Alice::Request& req, AliceResponse& res) {
/*
главвный Callback, вызывается каждый раз когда приходит запрос и не поподает под другой Callback
*/
// пока напишу выдуманный интерфейс, но не обращайте внимание будет ваш