Date: Thu, 9 Jul 2020 15:43:52 -0700
> > $ g++ -std=c++11 -o string_udl_test string_udl_test.cc
> > string_udl_test.cc:7:38: error: unable to find string literal operator
> > ‘operator""s’ with ‘const char [2]’, ‘long unsigned int’ arguments
> > 7 | const unordered_set<string> myset ({ "a"s, "b"s, "c"s, });
>
> The literals require C++14 to work.
Oh, I might've confused it with
https://en.cppreference.com/w/cpp/language/user_literal
And indeed, using string literal greatly reduces the compilation time!
The set with 50K strings, now compiles in7 secs! Unfortunately, I'm
not sure if I can use c++14 in our project yet.
>
> Perhaps you need to use an unordered_set<const char*>.
I did that initially just to see how it affected compilation speed.
While, its much faster with "const char*" (I think it was. < secs for
compiling 50K literals), its not usable since I don't want to compare
the pointers but the pointed to data:
const unordered_set<const char*> myset ({ "a", "b", "c", });
string key {"a"};
myset.find(key.c_str()); // does not find "a"
This is why I was trying to use string instead.
-mandeep
> > string_udl_test.cc:7:38: error: unable to find string literal operator
> > ‘operator""s’ with ‘const char [2]’, ‘long unsigned int’ arguments
> > 7 | const unordered_set<string> myset ({ "a"s, "b"s, "c"s, });
>
> The literals require C++14 to work.
Oh, I might've confused it with
https://en.cppreference.com/w/cpp/language/user_literal
And indeed, using string literal greatly reduces the compilation time!
The set with 50K strings, now compiles in7 secs! Unfortunately, I'm
not sure if I can use c++14 in our project yet.
>
> Perhaps you need to use an unordered_set<const char*>.
I did that initially just to see how it affected compilation speed.
While, its much faster with "const char*" (I think it was. < secs for
compiling 50K literals), its not usable since I don't want to compare
the pointers but the pointed to data:
const unordered_set<const char*> myset ({ "a", "b", "c", });
string key {"a"};
myset.find(key.c_str()); // does not find "a"
This is why I was trying to use string instead.
-mandeep
Received on 2020-07-09 17:47:18