Есть что-то, что вы нам не говорите. Следующая программа (скопированная по частям из вашего опубликованного кода) прекрасно компилируется с использованием Visual Studio 2008, при условии, что вы определили operator<
для вашей Styles
структуры (см. Ниже).
#include <set>
#include <string>
using namespace std;
struct Styles {
wstring styleVal;
wstring styleName;
};
int main ( int, char ** )
{
set<Styles> vtrStyles1;
set<Styles> vtrStyles2;
set<Styles> vtrStyles3(vtrStyles1);
vtrStyles3.insert(vtrStyles2.begin(), vtrStyles2.end());
const size_t unCommon =
vtrStyles1.size() + vtrStyles2.size() - vtrStyles3.size();
}
Следующее определение кажется мне приемлемым, но, возможно, оно не соответствует вашим ожиданиям. Вставьте это перед main()
.
bool operator< ( const Styles& lhs, const Styles& rhs )
{
return (lhs.styleName < rhs.styleName);
}
Если вы можете скомпилировать эту программу, то ваша проблема кроется в другом месте.