Я заметил, что если я использую push_back для вставки ints в вектор, я получаю ответ на 1, но если я вставляю целые числа в свой вектор по вектору [0], я получаю правильный ответ. Мой вопрос заключается в том, что push_back делает больше, чем просто вставляя мое целое число в вектор?C++ vector using push_back
#include<vector>
#include<iostream>
using namespace std;
typedef vector<int> vi;
class KeyDungeonDiv2 {
public:
int countDoors(vi doorR, vi doorG, vi keys)
{
int r = keys[0];
int g = keys[1];
int w = keys[2];
int numdoors = 0;
for(int i = 0; i < doorR.size(); i++) {
if(r >= doorR[i] && g >= doorG[i])
numdoors++;
else if (r < doorR[i] && g >= doorG[i]) {
if(r + w >= doorR[i]) {
numdoors++;
}
}
else if(r >= doorR[i] && g < doorG[i]) {
if(g + w >= doorG[i]) {
numdoors++;
}
}
else if (r < doorR[i] && g < doorG[i]) {
if(w >= (doorR[i] - r) + (doorG[i] - g)) {
numdoors++;
}
}
else if(doorR[i] == 0 && doorG[i] == 0)
numdoors++;
}
return numdoors;
}
};
int main()
{
vector<int> redDoors (4);
redDoors[0] = 2;
redDoors[1] = 0;
redDoors[2] = 5;
redDoors[3] = 3;
vector<int> greenDoors(4);
greenDoors[0] = 1;
greenDoors[1] = 4;
greenDoors[2] = 0;
greenDoors[3] = 2;
vector<int> keys (3);
keys[0] = 2;
keys[1] = 3;
keys[2] = 1;
KeyDungeonDiv2 d;
cout << d.countDoors(redDoors,greenDoors,keys) << endl;
return 0;
}
---- против .----
vector<int> redDoors (4);
redDoors.push_back(2);
redDoors.push_back(0);
redDoors.push_back(5);
redDoors.push_back(3);
vector<int> greenDoors(4);
greenDoors.push_back(1);
greenDoors.push_back(4);
greenDoors.push_back(0);
greenDoors.push_back(2);
vector<int> keys (3);
keys.push_back;
keys.push_back(3);
keys.push_back(1);
Так что, если мне нужно найти «, что Я добавил последний раз ", я просто проверяю redDoors [(redDoors.size() - 1)], если он был создан пустым? –
@huseyintugrulbuyukisik - Предполагая, что вы использовали метод push_back для добавления элемента в вектор, вы можете делать то, что вы предложили. Просто убедитесь, что ваш вектор не пуст первым ;-) –