来来来,关于一个stl的问题,拜托大侠们给我看看,怎么不能编译啊
#include <iostream>
#include <string>
#include <vector>
#include <sstream>
using namespace std;
int main()
{
char str[]= "I like you ";
stringstream ss(str);
vector <string> vs;
string s;
while(ss> > s)
{
vs.push_back(s);
}
vector <string> ::const_iterator vi;
for(vi=vs.begin();vi!=vs.end();vi++)
{
cout < <*vi < < " " < <endl;
}
vector <string> temp;
for(int i=0;i <(vs.size())/2;i++)
{
temp=vs[i]; //这个地方编译不过去啊
vs[i]=vs[vs.size()-i];
temp=vs[vs.size()-i];
}
for(vi=vs.begin();vi!=vs.end();vi++)
{
cout < <*vi < < " " < <endl;
}
return 0;
}
把I like you变成you like I,我知道用list就简单了,我现在用vector,所以需要交换,不知道怎么编译不过去,帮帮看看,谢谢
[解决办法]
reverse泛型算法是现成的。
[解决办法]
vector <string> temp;
==========
string temp;
[解决办法]
temp是vector <string> ,而vs[i]是vector <string> 的??不是吧...
vs是vector <string> 的吧...
[解决办法]
vs[i]=vs[vs.size()-i];有点问题
[解决办法]
....你看看你的temp是什么类型先
[解决办法]
vs[i]=vs[vs.size()-i];
=======================
vector里面不允许这样赋值
[解决办法]
Subscripting Does Not Add Elements
vector <int> ivec; // empty vector
for (vector <int> ::size_type ix = 0; ix != 10; ++ix)
ivec[ix] = ix; // disaster: ivec has no elements
The right way to write this loop would be
for (vector <int> ::size_type ix = 0; ix != 10; ++ix)
ivec.push_back(ix); // ok: adds new element with value ix
[解决办法]
你的temp没有必要声明为vector <string> 类型的。string就够了
vector <string> temp; --> string temp;
for(int i=0;i <(vs.size())/2;i++)
{
temp=vs[i]; //这个地方编译不过去啊 --> 因为你付值运算两边的类型不一致,且无法隐试转换
vs[i]=vs[vs.size()-i];
temp=vs[vs.size()-i];
}
[解决办法]
while(ss> > s) 直到失败才停止,满恐怖的.
[解决办法]
“while(ss> > s) 直到失败才停止,满恐怖的.”
哎,ctrl_z/F6结束输入