#include <iostream>
#include <cmath>
using namespace std;
int main() {
const double eps = 0.0001;
double x0 = 1;
double b = 0;
do {
const double xn = -log(x0 / 3);
b = abs(xn - x0);
x0 = xn;
} while (b > eps);
cout << "x = " << x0 << endl;
return 0;
}
xn = x0
struct Row {
int data[10];
};
struct Table {
Row rows[10];
}
int sortJ;
int myCompare(const void* a,const void* b) {
int ia = reinterpret_cast<Row*>(a)->data[sortJ];
int ib = reinterpret_cast<Row*>(b)->data[sortJ];
if (ia < ib) return -1;
if (ia == ib) return 0;
return 1;
}
int someJ = 5;
sortJ = someJ;
qsort(table.rows, 10, sizeof(Row), myCompare);
class MyCompare {
public:
MyCompare(int aJ) : j(aJ) {}
bool operator () (const Row& a, const Row& b) const
{ return (a.data[j] < b.data[j]); }
private:
const int j;
}
int someJ = 5;
std::sort(table.rows, table.rows + 10, MyCompare(someJ));
int someJ = 5;
std::sort(table.rows, table.rows + 10,
[someJ](const Row& a, const Row& b) -> bool { return (a.data[someJ] < b.data[someJ]); } );
connect(this, &RenewThread::needUpdate, fMainControl.maincQobj(),
[this]() {
drm::createFile(fReregKey);
fMainControl.maincLayoutOnRegister();
});
HRESULT EnumObjects(
LPDIENUMDEVICEOBJECTSCALLBACK lpCallback,
LPVOID pvRef,
DWORD dwFlags
);
BOOL DIEnumDeviceObjectsCallback(
LPCDIDEVICEOBJECTINSTANCE lpddoi,
LPVOID pvRef
);
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
using IntV = vector<int>;
int main(int argc, char const *argv[]) {
IntV v = {0, 9, 4, 6, 7, 8, 5, 6};
size_t count = 0;
for_each(begin(v), end(v), [](IntV::value_type x){cout << x << " ";});
cout << endl;
sort(begin(v), end(v), [&count /*closure*/](IntV::value_type &a, IntV::value_type &b){
++count;
return a < b;
});
cout << count << endl;
for_each(begin(v), end(v), [](IntV::value_type x){cout << x << " ";});
cout << endl;
return 0;
}
sudo apt-get install exfat-fuse exfat-utils
sudo mount -t exfat /dev/sdb1 /media/mefisto/Новый
using System;
using System.Diagnostics;
using System.IO;
namespace Test
{
class MainClass
{
public static void Main (string[] args)
{
string result = LinuxTerminal.GetOutput("find /sys/class/input -maxdepth 1 -name \"mouse*\"|wc -l");
int outputValue = int.Parse (result);
Console.WriteLine (outputValue);
Console.ReadKey ();
}
}
}
using System;
using System.Diagnostics;
namespace Test
{
public static class LinuxTerminal
{
private const string TerminalPath = "/bin/bash";
public static void ExecuteCommand(string command)
{
var proc = new Process();
proc.StartInfo.FileName = TerminalPath;
proc.StartInfo.Arguments = "-c \" " + command + " \"";
proc.StartInfo.UseShellExecute = false;
proc.Start();
}
public static int GetExitCode(string command)
{
var proc = new Process();
proc.StartInfo.FileName = TerminalPath;
proc.StartInfo.Arguments = "-c \" " + command + " \"";
proc.StartInfo.UseShellExecute = false;
proc.StartInfo.RedirectStandardOutput = true;
proc.Start();
proc.WaitForExit();
return proc.ExitCode;
}
public static string GetOutput(string command)
{
var proc = new Process();
proc.StartInfo.FileName = TerminalPath;
proc.StartInfo.Arguments = "-c \" " + command + " \"";
proc.StartInfo.UseShellExecute = false;
proc.StartInfo.RedirectStandardOutput = true;
proc.Start();
proc.WaitForExit();
return proc.StandardOutput.ReadToEnd();
}
}
}
using System.Diagnostics;
namespace ProcessStart
{
public static class CommandLine
{
public static int ExecuteCommand(string applicationPath, string command = "")
{
var proc = new Process();
proc.StartInfo.FileName = applicationPath;
proc.StartInfo.Arguments = command;
proc.StartInfo.UseShellExecute = false;
proc.StartInfo.CreateNoWindow = true;
proc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
proc.Start();
proc.WaitForExit();
return proc.ExitCode;
}
}
}
using System;
using System.IO;
namespace ProcessStart
{
class Program
{
private static Program _program;
static void Main(string[] args)
{
_program = new Program();
_program.Run();
}
private void Run()
{
const string ProgramName = "ReturnRandomNumber.exe";
string appName = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, ProgramName);
int exitCode = CommandLine.ExecuteCommand(appName);
Console.WriteLine(exitCode.ToString());
Console.ReadKey();
}
}
}
template<>
).List - внутренне хранит массив и отслеживает логический размер списка и размер поддерживающего массива. Добавление элемента является либо простым случаем установки очередного значения в массиве, либо (если массив уже заполнен) копированием существующего содержимого в новый массив большего размера (обычно в два раза, т.е. происходит удвоение, но это недокументированно) и затем установки в нем значения. Сложность O(1) или O(n) в зависимости от того требуется ли копирование значений. Удаление элемента из List требует копирования расположенных за ним элементов на позицию назад, поэтому сложность составляет O(n-k), где k - индекс удаляемого элемента. По индексу RemoveAt() удалять значительно быстрее чем по значению Remove(), т.к. во втором случае происходит сравнение каждого элемента где бы он не находился сложность O(n).
**Массивы** - самый низкий уровень коллекций в .Net. Унаследованы от System.Array, и они единственные имеют прямую поддержку в среде CLR. Массивы всегда изменяемы в терминах своих элементов, но всегда фиксированы в терминах своих размеров.
Foreach для массива использует его свойство Length и индексатор массива, а не создает объект итератора.
**LinkedList** - связанный список, каждый элемент которого имеет ссылку на предыдущий и следующий элемент. Быстро можно удалять, вставлять новые элементы, т.к. происходит только изменение ссылок на соседних узлах. Проход по коллекции тоже эффективен, но разумеется нет индекса.
**Dictionary** - подобно List хранит свои элементы в массиве, со всеми вытекающими по вставке и увеличению размера последствиями. Для реализации эффективного поиска использует хештаблицу. Можно либо применять стандартные функции хеширования и эквивалентности внутри самих объектов ключей, либо передать реализацию IEqualityComparer в аргументе конструктора. Ключи должны быть уникальными, но хешкоды могут совпадать, что снижает эффективность поиска. Словарь даст отказ, если ключи являются изменяемыми и меняют свои хешкоды после того, как были вставлены в словарь. Внутри этого словаря нет гарантии порядка следования элементов, так что рассчитывать на него нельзя. Вставка происходит на основе ключа (что-то вроде индекса), а не последовательности заполнения словаря.
**ReadOnlyDictionary<,>** - просто оболочка, которая скрывает все изменяемые операции за явной реализацией интерфейса, и генерирует исключение если они все же вызываются. Но если лежащая в основе коллекция (та что передается конструктору) модифицируется, то модификации будут видны через оболочку.
interface IFoo
{
// Не содержит метод Commit()
// Но содержит все остальные методы и свойства, которые реализованы в классе Foo
}
interface ITransaction
{
void Commit();
}
class Foo : IFoo, ITransaction
{
// ...
public void Commit()
{
// ...
}
}
class Bar<T, TImpl> where TImpl : T, ITransaction, new()
{
private readonly TImpl _foo;
protected T Foo {
get { return _foo; }
}
public Bar() {
_foo = new TImpl();
}
public void Commit()
{
_foo.Commit();
}
}
Easy to learn BASIC-like syntax
Simulate keystrokes and mouse movements
Manipulate windows and processes
Interact with all standard windows controls
Scripts can be compiled into standalone executables
Create Graphical User Interfaces (GUIs)
COM support
Regular expressions
Directly call external DLL and Windows API functions
Scriptable RunAs functions
Detailed helpfile and large community-based support forums
Compatible with Windows XP SP3 / 2003 SP2 / Vista / 2008 / Windows 7 / 2008 R2 / Windows 8 / 2012 R2
Unicode and x64 support
Digitally signed for peace of mind
Works with Windows User Account Control (UAC)