bool mget(std::vector<std::string> &keys)
{
+ std::vector<const char *> real_keys;
+ std::vector<size_t> key_len;
/*
* Construct an array which will contain the length
* of each of the strings in the input vector. Also, to
* interface with the memcached C API, we need to convert
* the vector of std::string's to a vector of char *.
*/
- size_t *key_len= static_cast<size_t *>(malloc(keys.size() * sizeof(size_t)));
- if (key_len == NULL)
- {
- return false;
- }
- std::vector<char *> real_keys;
+ real_keys.reserve(keys.size());
+ key_len.reserve(keys.size());
+
std::vector<std::string>::iterator it= keys.begin();
- int i= 0;
+
while (it != keys.end())
{
real_keys.push_back(const_cast<char *>((*it).c_str()));
- key_len[i++]= (*it).length();
+ key_len.push_back((*it).length());
++it;
}
*/
if (!real_keys.empty())
{
- memcached_return rc= memcached_mget(&memc, &real_keys[0], key_len,
+ memcached_return rc= memcached_mget(&memc, &real_keys[0], &key_len[0],
static_cast<unsigned int>(real_keys.size()));
return (rc == MEMCACHED_SUCCESS);
}