Category ArchiveC++
C++ 31 Jan 2010 11:37 pm
Snippet: Vector to Output Stream
//tinodidriksen.com/uploads/code/cpp/vector-to-ostream.cpp
#include <ostream>
#include <iostream>
#include <vector>
template<typename T>
std::ostream& operator<<(std::ostream& stm, const std::vector<T>& obj) {
stm << "[";
if (!obj.empty()) {
for (size_t i = 0 ; i<obj.size()-1 ; ++i) {
stm << obj[i] << ",";
}
stm << obj.back();
}
stm << "]";
return stm;
}
int main() {
std::vector<int> vec;
vec.push_back(1);
vec.push_back(2);
vec.push_back(3);
vec.push_back(2);
vec.push_back(5);
vec.push_back(6);
vec.push_back(1);
std::cout << vec << std::endl;
}
C++ 31 Jan 2010 11:35 pm
Snippet: Custom Type to Output Stream
//tinodidriksen.com/uploads/code/cpp/custom-to-ostream.cpp
#include <ostream>
#include <iostream>
#include <string>
struct Custom {
std::string m_str;
friend std::ostream& operator<<(std::ostream& stm,
const Custom& obj);
};
std::ostream& operator<<(std::ostream& stm, const Custom& obj) {
stm << obj.m_str;
return stm;
}
int main() {
Custom cst;
cst.m_str = "waffles";
std::cout << cst << std::endl;
}
C++ 31 Jan 2010 11:31 pm
Snippet: Convert String to Hex
//tinodidriksen.com/uploads/code/cpp/string-to-hex.cpp
#include <string>
#include <sstream>
#include <iostream>
#include <iomanip>
int main() {
std::string str("abcABC123\xff\x01");
std::stringstream ss;
for (size_t i=0 ; i<str.length() ; ++i) {
ss << std::setw(2) << std::setfill('0')
<< std::hex << (int(str[i])&0xFF);
}
std::cout << ss.str();
}
C++ 31 Jan 2010 11:23 pm
Snippet: Pointer Usage: Polymorphism
//tinodidriksen.com/uploads/code/cpp/pointer-polymorphism.cpp
#include <iostream>
struct A {
virtual void foo() {
std::cout << "A::foo()" << std::endl;
}
virtual ~A() {
}
};
struct B : public A {
void foo() {
std::cout << "B::foo()" << std::endl;
}
};
int main() {
A *a = new A;
a->foo();
delete a;
a = new B;
a->foo();
delete a;
}
C++ 04 Oct 2009 03:21 pm
C++ Map Speeds, MSVC++ Edition
(There is also a GNU g++ Edition of these performance tests, and a newer std::set comparison.)
Here is a complete test of MSVC++ map speeds, using same code as my previous map speed test: timemap.cpp with cycle.h.
The compilers are Microsoft Visual C++ 2008 Express as VC9 and Microsoft Visual C++ 2010 Beta as VC10. The containers are std::map, stdext::hash_map, std::tr1::unordered_map, and boost::unordered_map, each with _SECURE_SCL enabled and disabled.
Continue Reading »
