我處於聲明vector<vector<string>>
的情況。在Windows上,我可以聲明這樣的結構像vector<vector<string>>v={{"me","you"}}
,但在Linux機器..只是錯誤,所以我必須在結構初始化後聲明它,但如何,因爲mystruct.vec[0]={"me","you"}
給我一個分段錯誤。任何請求?向量字符串向量的問題
回答
在GCC 4.7.2這個程序只是正常:
#include <vector>
#include <string>
#include <utility>
#include <iostream>
using ::std::vector;
using ::std::string;
using ::std::move;
vector<vector<string>> foo()
{
vector<vector<string>>v={{"me","you"}};
return move(v);
}
int main()
{
using ::std::cout;
cout << "{\n";
for (auto &i: foo()) {
cout << " {\n";
for (auto &o: i) {
cout << " \"" << o << "\",\n";
}
cout << " },\n";
}
cout << "}\n";
return 0;
}
它產生這樣的輸出:
$ /tmp/a.out
{
{
"me",
"you",
},
}
我想你問題是舊的編譯器或者在代碼中的其他位置有其他問題。
我用這個命令行編譯:
$ g++ -std=gnu++0x -march=native -mtune=native -Ofast -Wall -Wextra vvstr.cpp
我的G ++給出了這樣一個版本:
$ g++ --version
g++ (GCC) 4.7.2 20121109 (Red Hat 4.7.2-8)
Copyright (C) 2012 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
本頁面告訴你哪個GCC的版本有哪些C++功能:
似乎是我的4.4.5(debian).. – siloan 2013-03-03 23:34:34
@siloan - 它看起來像在4.4中引入了初始化器列表。你確定你正在用'-std = gnu ++ 0x'或'-std = C++ 0x'標記編譯嗎? – Omnifarious 2013-03-03 23:38:38
是的,我正在編譯該標誌,併爲此'std :: vector
如果您使用的是GCC,則需要支持此C++ 11初始化功能的版本,然後您需要告訴編譯器在C++ 11模式下編譯爲-std=c++0x
標誌(或=std=c++11
爲4.7系列)。見this demo,與GCC 4.7.2編譯:
#include <vector>
#include <string>
int main()
{
std::vector<std::vector<std::string>> v = {{"me","you"}};
}
- 1. 向量問題的向量
- 2. 如何訪問(int和字符串向量)映射的向量
- 3. 多維向量字符串
- 4. 聲明向量的指針向量的字符串
- 5. 連接字符串/字符向量
- 6. 從輸入文件填充向量的字符串向量
- 7. 向量和字符串結構的向量不正確打印
- 8. C++向量問題
- 9. 添加元素到字符串向量時遇到問題
- 10. 例外問題使用STL字符串和向量類
- 11. ANSI C:指向字符串字面量
- 12. C++向量的字符串段錯誤
- 13. 字符串的二進制向量
- 14. std ::向帶自定義分隔符的字符串向量
- 15. 問題的初始向量
- 16. Win32 API的向量問題
- 17. 向字符串捕獲值的問題
- 18. 向量中的字符串變量導致大量錯誤(WinMainCRTStartup)
- 19. 迭代字符串向量C++
- 20. 向量元組字符串連接
- 21. 用Julia替換向量字符串
- 22. 在向量中搜索字符串
- 23. 如何向變量添加字符串;
- 24. 用字符串向量插入排序
- 25. 從循環創建字符串向量
- 26. 函子和字符串向量
- 27. 麻煩向量轉換爲字符串
- 28. 分割字符串與空間向量的字符串在C
- 29. 替換向量字符串中的字符串
- 30. C++數組向量問題
在windows和linux上可能有不同的編譯器版本或編譯器。請指定您正在使用的編譯器,或者(對於解決方案),只需將linux盒升級到最新的編譯器即可。 – 2013-03-03 23:14:29
這種初始化相對較新 - 它是C++ 11。並非所有編譯器都提供對該標準的全面支持。 – dasblinkenlight 2013-03-03 23:14:57
在Windows上,我在linux上使用mingw和最新的gcc代碼塊。 – siloan 2013-03-03 23:20:50