include
, а сорцы - в src
. Согласитесь, стремно было бы воспроизводить логическую иерархию дважды. А с помощью фильтров (aka виртуальных папок) можно легко всё сгруппировать так, как душе угодно.a[10]
) и выделение блоков памяти, на которые можно ссылаться через указатель (int *a = new int[10];
)int a[10];
a[333] = 5; // запись в ячейку памяти
//по адресу 334 * sizeof(int) от начала массива.
new
) нельзя определить их реальные размеры (для статических массивов мы можем сделать sizeof(a)/sizeof(int)
). Кроме того передавать многомерные массивы в функции, оперировать с динамическими массивами (изменяющими размер в процессе работы) и многие другие проблемы. Для их решения существует класс std::vector
, который дарит нам абстракцию над массивом в хипе.std::array
, который является абстракцией над статическим массивом. class Worker {
std::string _name;
...
public:
bool operator==(const Worker& other) const {
return _name == other.name;
}
};
//....
std::vector<Worker> workers = {...};
int count = std::count(begin(workers), end(workers), Worker("Vasili Pupkin"));
int size = 0;
cout << "Введите размер массива: "; cin >> size;
int *arr = new int[size];
const int SIZE = 333 + 768 * 2;
int arr[SIZE];
O(1)
), когда вычисляется смещение и мы можем сразу перейти к нужному элементу, как в std::vector
через []
или метод at(index)
.std::list
, чтобы попасть (вставить, удалить и т.п.) куда-то в середину, мы должны в это место попасть, попутно обойдя все ниже(выше) лежащие элементы, один за другим. Это достаточно медленно (O(n)
). Но сама вставка будет дешевой в любом месте (O(1)
). 1) if ( *originalName )
при каких условиях оно срабатывает\не срабатывает.
0
, не срабатывает - в противном случае.2) while ( v6 )
как оно считает что пора бы и закончить?
0
.3) v6 = (originalName++)[1]
я так понимаю что тут берется первый элемент из originalName?
originalName
(до инкремента).4) unsigned __int16
есть ли аналог этому типу в jav'е?
long
вместит все его значения. если буду использоваться язык с более богатым STL.
std::numeric_limits
.
1. [ Note: Clause 5 defines the syntax, order of evaluation, and meaning of expressions.60 An expression is a
sequence of operators and operands that specifies a computation. An expression can result in a value and
can cause side effects. — end note ]
....
4. If during the evaluation of an expression, the result is not mathematically defined or not in the range of representable values for its type, the behavior is undefined.
<Х>
- расскажите компилятору, где у вас находятся инклуды.INCLUDEPATH
INCLUDE
. QObject
пока опустим):Get::Get(const QString &peer, const QString &objectId, QObject *parent) :
QObject(parent)
{
this->peer = peer;
this->objectId = objectId;
this->socket = new QUdpSocket(this);
...
peer
, objectId
, socket
) сначала бы создавались с помощью своих конструкторов по умолчанию, а лишь затем для них вызывалось бы присваивание. То есть это 2 действия, вместо одного - вызова правильного конструктора сразу (инициализации).QObject
, он - родительский класс для типа Get
, потому на нем тоже необходимо вызвать конструктор QObject(QObject *parent)
QString
передается по ссылке и планируется только для чтения, потому его делают константным.const
не нужно, достаточно передавать их по значению (аргумент скопируется и нам будет доступна лишь его копия). Но QString
может быть достаточно крупным, а вызовы метода - достаточно частыми, потому передается просто ссылка. Появляется возможность изменить объект через эту ссылку. Чтобы это снова запретить, в методе указывают const
для аргумента-ссылки. Request-URI = "*" | absoluteURI | abs_path | authority
BitBlt
- наш лучший друг). Затем ассоциировать с картинкой-картой точки маршрута, поверх которого можно размещать граф возможных путей. И искать кротчайший путь алгоритмом Дейкстры.