В настоящее время я пытаюсь получить «вариационные функции» и просто пытаюсь загрузить 4 имени в вектор-строке, а затем распечатать их. Когда я делаю это с помощью типа «int» и использую числа, он работает нормально, но когда я использую вектор строки, я получаю ошибку.Ошибка «векторного индекса за пределами диапазона»
#include "stdafx.h"
#include<cstdio>
#include<cstdarg>
#include<string>
#include<vector>
#include<iostream>
using namespace std;
int count;
vector<string> namesVector;
void names(int count, ...)
{
va_list namesList;
int i; // for loop
va_start(namesList, count);
for (i = 0; i < count; i++)
{
string currentElement;
currentElement = va_arg(namesList, string);
namesVector[i] = currentElement;
}
va_end(namesList);
}
int main()
{
int nameCount = 4;
names(nameCount,"jon", "maggie", "joan", "alfred");
for (int i = 0; i < nameCount; i++)
{
cout << "Name at element " << i << " is: " << namesVector[i] << endl;
}
}
Это звучит, как вы, возможно, потребуется, чтобы узнать, как использовать отладчик для пошагового кода. С хорошим отладчиком вы можете выполнить свою программу по очереди и посмотреть, где она отклоняется от ожидаемого. Это важный инструмент, если вы собираетесь заниматься программированием. Дальнейшее чтение: ** [Как отлаживать небольшие программы] (http://ericlippert.com/2014/03/05/how-to-debug-small-programs/) ** –
Я предлагаю вам провести некоторое время [чтение о том, как работает 'std :: vector'] (http://en.cppreference.com/w/cpp/container/vector). – caps