string total_1[] = {};
string total_1[10];
total_1[4] = "Hello, world!";
#include <vector>
...
vector<string> total_1;
total_1.push_back("Hello, world!");
for (int j=0, i = 0, z=0; i < size,j<size,z<size; i++,j++,z++)
{
if (massA[i] == massB[j]) {
massC[z] = massA[i];
cout << massC[z] << " ";
}
}
for (int i = 0; i < size; ++i)
{
if (massA[i] == massB[i]) {
massC[i] = massA[i];
cout << massC[i] << " ";
}
}
int k = 0;
for (int j = 0; i < size; ++i)
{
for (int j = 0; j < size; ++i)
{
if (A[i] == B[j])
{
// Здесь можно сделать так:
C[k] = A[i];
++k;
// или одной строчкой
// C[k++] = A[i]
}
}
}
main.cpp:1:11: error: ‘::main’ must return ‘int’
#include <ctime>
system("pause");
функция system, приостанавливает вашу программу, и запускает указанную в аргументе. Люди которые не используют Windows, не смогут запустить ваш код, потому что у них нет программы pause. coin25 > 0
, но зачем, если вы никогда не изменяете эту переменную?surrender - coin25
вычисляет значение, но никуда его не записывает. Если хотите отнять что-то от переменной, можно использовать foo = foo - bar;
или foo -= bar;
#include <iostream>
int main()
{
const int N = 4;
const int coinsValue[N] = {25, 10, 5, 1};
int coinsCount[N] = { 0, 0, 0, 0};
int sum;
std::cin >> sum;
for (int i = 0; i < N; ++i)
{
while (sum >= coinsValue[i])
{
coinsCount[i]++;
sum -= coinsValue[i];
}
std::cout << coinsCount[i] << " (" << coinsValue[i] <<
(coinsCount[i] == 1 ? ") coin\n" : ") coins\n");
}
}
extern int N; // variable declaration
int N; // variable definition
// function declaration
float f(float x, float y);
// function definition
float f(float x, float y)
{
return x + y;
}
// class declaration
class Foo
{
public:
Foo();
void bar();
private:
static int baz;
}
// class member definition
Foo::Foo()
{
// do some stuff
}
// class member definition
void Foo::bar()
{
// do some stuff
}
// class member definition
int Foo::baz = 42;
cout << static_cast<int>(arr[i][z]) << endl;
#include <iostream>
'\n'
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 10; j++) {
cout << arr[i][j] << ' '; // пробел можно убрать
}
cout << '\n';
}
system
. Она приостанавливает вашу программу, и запускает другую (в данном случае pause
). Такой вариант не только не оптимальный, но ещё и платформозависимый. Людям, которые используют mac или linux придётся вносить изменения в ваш код, чтоб запустить его, так как в этих ОС нет команды pause
. Используйте для этого средства языка C++: cin.get();
// Так, если хотите, чтоб они указывали на одну область:
Number& operator = (const Number& other)
{
delete val;
this->val = other.val;
return *this;
}
// Так, если должна создаваться копия значения:
Number& operator = (const Number& other)
{
delete val;
this->val = new float(*(other.val));
return *this;
}
operator=
должен возвращать ссылку на левый операнд. void foo(int** arr)
{
/* do something */
}
...
int** array = new int[m];
for (size_t i = 0; i < m; ++i)
{
array[i] = new int[n];
}
foo(arr);
for (size_t i = 0; i < m; ++i)
{
delete[] array[i];
}
delete[] array;
#include <iostream>
using namespace std;
void foo(int* x) {*x = 7;}
int main(int argc, char** argv)
{
int x = 0;
foo(&x);
cout << x << endl;
return 0;
}
#include <iostream>
using namespace std;
void foo(int& x) {x = 7;}
int main(int argc, char** argv)
{
int x = 0;
foo(x);
cout << x << endl;
return 0;
}
g++ -S ptr.cpp
g++ -S ref.cpp
diff ptr.s ref.s
ctime
, а не time.h
#include <random>
...
std::random_device rd;
std::cout << rd() % 10;
void fill_with_random(int* arr, size_t n)
{
random_device rand;
for (size_t i = 0; i < n; ++i)
{
arr[i] = rand() % 21 - 10;
}
}
cout << y[0][0]; //все прекрасно выводится
/*но если попробовать сделать y[0][0]+=1; то выводится ошибка "выражение должно быть допустимым для изменения левосторонним значением"*/
int operator [](int i)
{
return x[i];
}
int& operator [](int i)
{
return x[i];
}
int operator [](int i)
{
return y[i][0]; /*совершенно непонятно, какую роль здесь играет [0], и почему не работает с просто return y[i]... при изменении [0] на любое другое число, результат не меняется...*/
}
massiv& operator [](int i)
{
return y[i];
}
class Matrix
{
public:
Matrix() {}
int* operator[] (size_t i)
{
return &arr[i][0]; // Указатель на первый элемент i-ой строки.
}
private:
int arr[5][5];
}
cout << sqrt(n) << endl;
endl
. После каждого вычисления вы зачем-то сбрасываете поток вместо того, чтоб просто вывести символ перевода на новую строку '\n'
.math.h
, а в C++ - cmath
. И зачем вы используете while вместо for?#include <cstdint>
...
for (uint64_t i = 0; i < UINT64_MAX; ++i)
#include <iostream>
#include <sstream>
#include <string>
#include <thread>
#include <mutex>
#include <chrono>
#include <cmath>
#include <cstdint>
using namespace std;
mutex ios_mutex;
void compute(int b, int e)
{
stringstream buffer;
for (uint64_t i = b; i < e; ++i)
{
buffer << sqrt(i) << '\n';
}
ios_mutex.lock();
cout << buffer.str();
ios_mutex.unlock();
}
int main(int argc, char** argv)
{
thread t0(compute, 0, 99);
thread t1(compute, 100, 199);
thread t2(compute, 200, 299);
thread t3(compute, 300, 399);
thread t4(compute, 400, 499);
thread t5(compute, 500, 599);
thread t6(compute, 600, 699);
thread t7(compute, 700, 799);
t0.join();
t1.join();
t2.join();
t3.join();
t4.join();
t5.join();
t6.join();
t7.join();
return 0;
}
explicit
, если хотите изменить это поведение.class Foo
{
public:
Foo(int v) : _v(v) {}
private:
int _v;
};
class Bar
{
public:
explicit Bar(int v) : _v(v) {}
private:
int _v;
};
void baz(Foo foo) {/* some code */}
void qux(Bar bar) {/* some code */}
int main()
{
Foo foo = Foo(4);
Bar bar = Bar(4);
baz(foo); // Ok.
baz(4); // Ok.
qux(bar); // Ok.
qux(4); // Fail.
}
#include <cstdint>
int64_t foo; uint64_t bar; // 8 байт. Знаковый и беззнаковый.
int32_t foo; uint32_t bar; // 4 байта. Знаковый и беззнаковый.
// Функция, которая принимает массив.
void foo(int* arr, size_t n)
{
for (size_t i = 0; i < n; ++i)
cout << arr[i] << ' ';
}
// Функция, которая возвращает массив.
int* bar(size_t n)
{
// Массив должен быть выделен динамически, иначе
// он перестанет существовать после завершения этой функции.
int* arr = new int[n];
for (size_t i = 0; i < n; ++i)
cin >> arr[i];
return arr;
}
delete[] arr;
), после того, как они станут больше не нужны.