Я пытаюсь изменить вектор на C++. Проблема в том, что когда я распечатываю «обратный» вектор, я получаю исходный вектор. Я знаю, что чего-то не хватает. Могу ли я получить несколько советов относительно того, что нужно думать. Я googled и увидел, что большинство людей используют тот же метод. Единственное, о чем я могу думать, это то, что у вектора inputBinary
есть проблемы с его указателями. Когда я распечатываю *begin(inputBinary)
, я получаю 1
, но *end(inputBinary)
дает что-то вроде 14743
.Обращение с вектором в C++ не работает
#include <iostream>
#include <vector>
#include <algorithm>
#include <iterator>
using namespace std;
vector<int> convert2Bin(int& n);
int main()
{
int input;
cin >> input;
vector<int> inputBinary = convert2Bin(input);
reverse(begin(inputBinary), end(inputBinary));
for(int i = 0; i<inputBinary.size();i++)
{
cout << inputBinary[i];
}
return 0;
}
vector<int> convert2Bin(int& n)
{
vector<int> v;
int i = 0, x;
while(n != 0)
{
x = n%2;
v.push_back(x);
n = n/2;
}
return v;
}
'end' дает вам итератор в один конец, если вы хотите увидеть первый и последний элементы вектора, используйте' .front() 'и' .back() 'соответственно –
Что такое вывод ? Что вы ожидаете от вывода? – Arunas
Пробовал ли вы распечатать вектор * до того, как он изменил его, чтобы увидеть, действительно ли проблема реверсирует его или что-то еще? Как неправильное ожидание результата вашей функции 'convert2Bin'? –