我有三個問題基於以下代碼片段
我有一個字符串列表。這恰好是一個矢量但也可能是任何來源如何遍歷std :: vector <char>並找到以空字符結尾的c字符串
vector<string> v1_names = boost::assign::list_of("Antigua and Barbuda")("Brasil")("Papua New Guinea")("Togo");
以下是存儲每個名字的長度
vector<int> name_len;
下面是我想要的存儲串
std::vector<char> v2_names;
估計從v1_names複製名稱所需的內存
v2_names.reserve(v1_names.size()*20 + 4);
問題:這是估計存儲的最好方法嗎?我固定在20這是確定爲LEN的最大值,然後添加空間空treminator
現在複製名稱
for(std::vector<std::string>::size_type i = 0; i < v1_names.size(); ++i)
{
std::string val(v1_names[i]);
name_len.push_back(val.length());
for(std::string::iterator it = val.begin(); it != val.end(); ++it)
{
v2_names.push_back(*it);
}
v2_names.push_back('\0');
}
問題:這是元素從v1_name複製到v2_names最有效的方法是什麼?
主要問題:我如何遍歷v2_names和打印包含在v2_names
爲什麼要這樣做?存儲「矢量」的問題是什麼?你可能最終會使解決方案非常複雜,無緣無故... –