将矢量元素插入集合,同时打印集合元素得到编译问题 c++98
Inserting elements of vector into set, while printing set elements gets compilation issue c++98
我正在将矢量值插入到集合中。之后,我试图在遇到编译问题时打印设置值。请帮助我理解我做错了什么。
code:
#include<iostream>
#include<set>
#include<vector>
using namespace std;
int main()
{
set<string> s1;
vector<string> v1;
v1.push_back("Hello");
v1.push_back("Hello");
v1.push_back("Hi");
v1.push_back("Hi");
v1.push_back("Cya");
for(int i=0; i<v1.size(); i++)
{
s1.insert(v1[i]);
}
for(int i= 0; i<s1.size(); i++)
{
cout<<s1[i]<<endl;
}
return 0;
}
compilation error:
error: no match for ‘operator[]’ (operand types are ‘std::set<std::basic_string<char> >’ and ‘int’)
cout<<s1[i]<<endl;
您使用迭代器接口:
for (std::set<std::string>::const_iterator it = s1.begin(), end = s1.end();
it != end; ++it) {
std::cout << *it << '\n';
}
您也可以使用 std::copy
:
std::copy(s1.begin(), s1.end(),
std::ostream_iterator<std::string>(std::cout, "\n"));
我正在将矢量值插入到集合中。之后,我试图在遇到编译问题时打印设置值。请帮助我理解我做错了什么。
code:
#include<iostream>
#include<set>
#include<vector>
using namespace std;
int main()
{
set<string> s1;
vector<string> v1;
v1.push_back("Hello");
v1.push_back("Hello");
v1.push_back("Hi");
v1.push_back("Hi");
v1.push_back("Cya");
for(int i=0; i<v1.size(); i++)
{
s1.insert(v1[i]);
}
for(int i= 0; i<s1.size(); i++)
{
cout<<s1[i]<<endl;
}
return 0;
}
compilation error:
error: no match for ‘operator[]’ (operand types are ‘std::set<std::basic_string<char> >’ and ‘int’)
cout<<s1[i]<<endl;
您使用迭代器接口:
for (std::set<std::string>::const_iterator it = s1.begin(), end = s1.end();
it != end; ++it) {
std::cout << *it << '\n';
}
您也可以使用 std::copy
:
std::copy(s1.begin(), s1.end(),
std::ostream_iterator<std::string>(std::cout, "\n"));