初始化矢量的大小其他附加不会工作,为什么?

时间:2017-11-16 19:21:05

标签: c++

#include <cmath>
#include <cstdio>
#include <vector>
#include <iostream>
#include <algorithm>
#include <string>
using namespace std;

int main()
{
int n;
vector < string > arr(100); // initialise the size of vector always else 
appending wont work,why?
string y;
int x;
cin>>n;
for(int i=0;i<n;i++)
{
    cin>>x>>y;
    fflush(stdin);
    if(i<n/2)
    {
       arr[x].append("- "); //appending the first 10 positions with "- "
    }
    else
    {
        arr[x].append(y);
        arr[x].append(" "); //appending the last 10 positions with given 
strings
    }
}
for(int i=0;i<100;i++)
{
    cout<<arr[i];
}
return 0;
} 

附加不通过使用+或附加它给出警告请解释为什么先生? 它给出了一个指向函数操作中使用函数的指针的警告......

1 个答案:

答案 0 :(得分:3)

  

初始化向量的大小总是附加不工作,为什么?

因为这段代码:

arr[x].append("- ");

表示&#34;在向量append()&#34;的第x个元素上调用方法arr。当您创建arr空的第x个元素(无论x具有什么值)时,该元素不存在且您的代码具有UB。