有人能告诉我为什么我得到:“非法使用这种类型的表达式:std :: string”与for循环?据我所知,一切都应该正确设置。我试图遍历矢量中的字符串并检查每个字符串成员的大小写(尽管我真的只对第一个字符串感兴趣,因此排序算法不会将大写单词与小写字母分开......)std ::向量上的字符串错误<string> ::迭代器
/* BiasedSort: accepts vector<string> by REFERENCE and sorts the vector lexographically, except that if the vector
* contains "Me First", that string is always at the front.
*/
#include <string>
#include <vector>
#include <iostream>
#include <algorithm>
#include <iterator>
using namespace std;
// getting error on the "for" line.
void ConvertToLower (vector<string> &vector)
{
for (vector<string>::iterator iter = vector.begin();
iter != vector.end(); ++iter) {
string iterString = *iter;
transform(iterString.begin(), iterString.end(), iterString.begin(), ::tolower);
}
}
void BiasedSort (vector<string> &vector)
{
ConvertToLower(vector);
sort(vector.begin(), vector.end());
}
int main()
{
vector<string> myVector;
myVector.push_back("this");
myVector.push_back("string");
myVector.push_back("and");
myVector.push_back("vector");
myVector.push_back("are for");
myVector.push_back("testing");
myVector.push_back("purposes");
copy(myVector.begin(), myVector.end(), ostream_iterator<string>(cout, " "));
cout << endl;
BiasedSort(myVector);
copy(myVector.begin(), myVector.end(), ostream_iterator<string>(cout, " "));
cout << endl;
system("pause");
return 0;
}
出于好奇,你是否正在使用CS106L课程阅读器进行练习?如果是这样,你发现它们有多有用? – templatetypedef 2012-01-29 07:34:49
'滥用命名空间标准;'只是说不。 – 2012-01-29 07:35:05
1.是的,我正在练习CS106L以外的练习。实验室很棒。比类更具体的C++。强烈推荐。 2.我知道我知道,命名空间std滥用...给我打电话newb ...有趣。 – MCP 2012-01-29 07:38:59