我有这段代码:
#include <iostream>
#include <string>
#include <vector>
using namespace std;
vector<string> *vecptr;
int veclen;
void getinput()
{
string temp;
for(int i = 0; i < 3; i++)
{
cin>>temp;
vecptr->push_back(temp);
}
veclen = vecptr->size();
}
int main()
{
getinput();
for(int i = 0; i < veclen; i++)
{
cout<<vecptr[i]<<endl;
}
return 0;
}
我的编译器(G ++)给我一些错误:test2.cpp:28:17:错误:不匹配'operator&lt;&lt;'在'std :: cout&lt;&lt; *(vecptr +((unsigned int)(((unsigned int)i)* 12u)))'...
怎么了?我该怎么做才能解决它?
答案 0 :(得分:9)
该计划仍然不完全正确。你必须初始化向量指针,然后给它一个大小并使用它。完整的工作代码可以是,
#include <iostream>
#include <string>
#include <vector>
using namespace std;
vector<string> *vecptr = new vector<string>(10);
int veclen;
void getinput()
{
string temp;
for(int i = 0; i < 3; i++)
{
cin>>temp;
(*vecptr)[i] = temp;
}
veclen = (*vecptr).size();
}
int main()
{
getinput();
for(int i = 0; i < veclen; i++)
{
cout<<(*vecptr)[i]<<endl;
}
return 0;
}
虽然我已经提到大小为10,但你可以把它变成一个变种。
答案 1 :(得分:6)
您需要在此处取消引用vecptr
以获取基础向量:
cout << (*vecptr)[i] << endl;
您还需要初始化vecptr
。