В маленьких и простых задачах я не использую повышение, я использую dirent.h, который также доступен для окон:
DIR *dir;
struct dirent *ent;
if ((dir = opendir ("c:\\src\\")) != NULL) {
/* print all the files and directories within directory */
while ((ent = readdir (dir)) != NULL) {
printf ("%s\n", ent->d_name);
}
closedir (dir);
} else {
/* could not open directory */
perror ("");
return EXIT_FAILURE;
}
Это - просто маленький заголовочный файл и делает большую часть простого материала, в котором Вы нуждаетесь, не используя большой основанный на шаблоне подход как повышение (никакое преступление, мне нравится повышение!).
автором слоя совместимости окон является Toni Ronkko. В Unix это - стандартный заголовок.
ОБНОВЛЕНИЕ 2017 :
В C++ 17 существует теперь официальный способ перечислить файлы Вашей файловой системы: std::filesystem
. Существует превосходный ответ от Shreevardhan ниже с этим исходным кодом:
#include
#include
#include
namespace fs = std::filesystem;
int main()
{
std::string path = "/path/to/directory";
for (const auto & entry : fs::directory_iterator(path))
std::cout << entry.path() << std::endl;
}
Это просто квадрат каждого элемента.
from numpy import *
a = arange(4).reshape((2,2))
print a**2
выводит
[[0 1]
[4 9]]
Вы должны прочитать NumPy для пользователей Matlab . Там упоминается поэлементная операция мощности, и вы также можете видеть, что в numpy некоторые операторы по-разному применяются к массиву
и матрице
.
>>> from numpy import *
>>> a = arange(4).reshape((2,2))
>>> print a**2
[[0 1]
[4 9]]
>>> print matrix(a)**2
[[ 2 3]
[ 6 11]]
**
- оператор возведения в степень в Python, поэтому x ** 2
означает «x в квадрате» в Python, включая numpy. Такие операции в numpy всегда применяются поэлементно, поэтому x ** 2
возводит в квадрат каждый элемент массива x
(любое количество измерений), как, скажем, x * 2
удвоит каждый элемент, или x + 2
увеличит каждый элемент на два (в каждом случае собственно x
не затрагивается - результатом является новый временный массив та же форма, что и x
!).
Edit : как указывает @ kaizer.ze, в то время как то, что я написал, справедливо для объектов numpy.array
, это не так применить к объектам numpy.matrix
, где умножение означает матричное умножение, а не операцию элемент за элементом, как для array
(и аналогично для возведения в степень) - действительно, это ключевое различие между двумя типами. Как сказано в учебнике Scipy , например:
Когда мы используем numpy.array или numpy.matrix есть разница. A * x будет в последнем случае матрицей продукт, а не поэлементный продукт как с массивом.
то есть, как сказано в numpy ссылке :
Матрица - это специализированный двумерный массив который сохраняет свою двумерную природу благодаря операции. В нем есть особые операторы, такие как
*
(матрица умножение) и**
(степень матрицы).