История изменений
Исправление
wota,
(текущая версия)
:
взял вариант quasimoto за основу:
#include <algorithm>
#include <iostream>
#include <map>
#include <vector>
using namespace std;
template<class Source, class Destination, class Predicate>
void copy_if( const Source& s, Destination& d, Predicate pred ) {
copy_if( s.begin(), s.end(), inserter( d, d.begin() ), pred );
}
using SubMap = map<string, vector<string>>;
template <typename T> using Map = map<T, SubMap>;
template <typename T>
static Map<T> compressDependencies(Map<T> const& dependencies) {
Map<T> result;
for (auto & entry : dependencies) {
copy_if( entry.second, result[ entry.first ],
[](const SubMap::value_type& subEntry) { return subEntry.second.size(); });
}
return result;
}
int main() {
Map<int> m;
m[0]["1"] = {};
m[0]["2"] = { "0" };
cout << m[0].size() << '\n';
Map<int> r = compressDependencies( m );
cout << r[0].size() << '\n';
}
~$ g++ -std=c++11 1.cpp
~$ ./a.out
2
1
Исправление
wota,
:
взял вариант quasimoto за основу:
#include <algorithm>
#include <iostream>
#include <map>
#include <vector>
using namespace std;
template<class Source, class Destination, class Predicate>
void copy_if( const Source& s, Destination& d, Predicate pred ) {
copy_if( s.begin(), s.end(), inserter( d, d.begin() ), pred );
}
using SubMap = map<string, vector<string>>;
template <typename T> using Map = map<T, SubMap>;
template <typename T>
static Map<T> compressDependencies(Map<T> const& dependencies) {
Map<T> result;
for (auto & entry : dependencies) {
copy_if( entry.second, result[ entry.first ],
[](const SubMap::value_type& subEntry) { return subEntry.second.size(); });
}
return result;
}
int main() {
Map<int> m;
m[0]["1"] = {};
m[0]["2"] = { "0" };
cout << m[0].size() << '\n';
Map<int> r = compressDependencies( m );
cout << r[0].size() << '\n';
}
~$ g++ -std=c++11 1.cpp
~$ ./a.out
2
1
Исходная версия
wota,
:
взял вариант quasimoto за основу:
#include <algorithm>
#include <iostream>
#include <map>
#include <vector>
using namespace std;
template<class Source, class Destination, class Predicate>
void copy_if( const Source& s, Destination& d, Predicate pred ) {
copy_if( s.begin(), s.end(), inserter( d, d.begin() ), pred );
}
using SubMap = map<string, vector<string>>;
template <typename T> using Map = map<T, SubMap>;
template <typename T>
static Map<T> compressDependencies(Map<T> const& dependencies) {
Map<T> result;
for (auto & entry : dependencies) {
copy_if( entry.second, result[ entry.first ],
[](const SubMap::value_type& subEntry) { return subEntry.second.size(); }
);
}
return result;
}
int main() {
Map<int> m;
m[0]["1"] = {};
m[0]["2"] = { "0" };
cout << m[0].size() << '\n';
Map<int> r = compressDependencies( m );
cout << r[0].size() << '\n';
}
~$ g++ -std=c++11 1.cpp
~$ ./a.out
2
1